[MGNLUI-2966] Exception when working with the page tree containing a deleted page variant Created: 04/Jun/14  Updated: 13/Jun/14  Resolved: 10/Jun/14

Status: Closed
Project: Magnolia UI
Component/s: pages app, tree/list
Affects Version/s: 5.3
Fix Version/s: 5.3

Type: Bug Priority: Blocker
Reporter: Andreas Weder Assignee: Aleksandr Pchelintcev
Resolution: Fixed Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

5.3 eebundle snapshot from build #3405 (04.06.2014 11:22:33)

http://nexus.magnolia-cms.com/service/local/repositories/magnolia.enterprise.snapshots/content/info/magnolia/eebundle/magnolia-enterprise-bundle/5.3-SNAPSHOT/magnolia-enterprise-bundle-5.3-20140604.092300-265-tomcat-bundle.tar.gz


Attachments: PNG File 1 Vaadin reports an internal error.png     PNG File 2 Log entries.png     PNG File 3 After page reload.png    
Issue Links:
Cloners
is cloned by MGNLUI-2999 ArrayIndexOutOfBoundsException when w... Closed
relation
is related to MGNLUI-2988 AppLifecycleEventType#FOCUSED is not ... Closed
is related to MGNLCTS-56 Update constructor of TranslationBrow... Closed
supersession
is superseded by MGNLUI-3001 Tree/View gets out of sync if worked ... Open
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Release notes required:
Yes
Date of First Response:

 Description   

I've deleted a page variant and have published the deletion. I go through the work flow, assign the "publish deletion" task to me, then approve it. The page is successfully deleted. I then close Pulse and am back to Pages, which still shows the deleted&published page variant - that's fine: we can't push such an asynchronously triggered change yet.

However, in order to update the view, I decided not to refresh the page, but close and open the master node. This causes an ArrayIndexOutOfBoundsException, shown below.

The relevant part of the log file, including the publication of the deleted page, looks like this:

2014-06-04 15:29:39,269 INFO  nolia.module.exchangetransactional.XAReceiveFilter: null User superuser successfully deactivated null on magnoliaPublic.
2014-06-04 15:29:39,941 INFO  info.magnolia.module.activation.BaseSyndicatorImpl: Exchange: activation succeeded [/demo-project/about/subsection-articles/large-article/variants/variant-0]
2014-06-04 15:29:55,529 WARN  gnolia.ui.workbench.container.AbstractJcrContainer: Couldn't find item info.magnolia.ui.vaadin.integration.jcr.JcrNodeItemId@4a94ab57 so property jcrName can't be retrieved!
2014-06-04 15:29:55,550 WARN  gnolia.ui.workbench.container.AbstractJcrContainer: Couldn't find item info.magnolia.ui.vaadin.integration.jcr.JcrNodeItemId@4a94ab57 so property title can't be retrieved!
2014-06-04 15:29:55,550 WARN  gnolia.ui.workbench.container.AbstractJcrContainer: Couldn't find item info.magnolia.ui.vaadin.integration.jcr.JcrNodeItemId@4a94ab57 so property mgnl:template can't be retrieved!
2014-06-04 15:29:55,550 WARN  gnolia.ui.workbench.container.AbstractJcrContainer: Couldn't find item info.magnolia.ui.vaadin.integration.jcr.JcrNodeItemId@4a94ab57 so property status can't be retrieved!
2014-06-04 15:29:55,551 WARN  gnolia.ui.workbench.container.AbstractJcrContainer: Couldn't find item info.magnolia.ui.vaadin.integration.jcr.JcrNodeItemId@4a94ab57 so property mgnl:lastModified can't be retrieved!
04.06.2014 15:29:55 com.vaadin.server.DefaultErrorHandler doDefault
SCHWERWIEGEND: 
java.lang.ArrayIndexOutOfBoundsException: 16
	at com.vaadin.ui.Table.removeRowsFromCacheAndFillBottom(Table.java:1913)
	at com.vaadin.ui.Table.paintPartialRowAdditions(Table.java:3348)
	at com.vaadin.ui.Table.paintPartialRowUpdate(Table.java:3279)
	at com.vaadin.ui.Table.doPaintContent(Table.java:3224)
	at com.vaadin.ui.Table.paintContent(Table.java:3195)
	at com.vaadin.ui.TreeTable.paintContent(TreeTable.java:496)
	at com.vaadin.server.LegacyPaint.paint(LegacyPaint.java:65)
	at com.vaadin.server.communication.LegacyUidlWriter.write(LegacyUidlWriter.java:81)
	at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:106)
	at com.vaadin.server.communication.UidlRequestHandler.writeUidl(UidlRequestHandler.java:149)
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:97)
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1371)
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
	at info.magnolia.ui.admincentral.AdmincentralVaadinServlet.service(AdmincentralVaadinServlet.java:131)
	at [...]

When I actually reload the page, the deleted page disappears, but the count on the "Variants" node is still wrong (shows 2, instead of 1 variant) and I get another exception:

04.06.2014 15:43:08 com.vaadin.server.DefaultErrorHandler doDefault
SCHWERWIEGEND: 
java.lang.ArrayIndexOutOfBoundsException: -1
	at java.util.ArrayList.get(ArrayList.java:324)
	at com.vaadin.ui.TreeTable$HierarchicalStrategy.getIdByIndex(TreeTable.java:310)
	at com.vaadin.ui.TreeTable.getIdByIndex(TreeTable.java:617)
	at com.vaadin.ui.TreeTable.getItemIds(TreeTable.java:879)
	at com.vaadin.ui.Table.getVisibleCellsNoCache(Table.java:2169)
	at com.vaadin.ui.Table.getVisibleCellsUpdateCacheRows(Table.java:1926)
	at com.vaadin.ui.Table.paintPartialRowUpdates(Table.java:3294)
	at com.vaadin.ui.Table.paintPartialRowUpdate(Table.java:3278)
	at com.vaadin.ui.Table.doPaintContent(Table.java:3224)
	at com.vaadin.ui.Table.paintContent(Table.java:3195)
	at com.vaadin.ui.TreeTable.paintContent(TreeTable.java:496)
	at com.vaadin.server.LegacyPaint.paint(LegacyPaint.java:65)
	at com.vaadin.server.communication.LegacyUidlWriter.write(LegacyUidlWriter.java:81)
	at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:106)
	at com.vaadin.server.communication.UidlRequestHandler.writeUidl(UidlRequestHandler.java:149)
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:97)
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1371)
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
	at info.magnolia.ui.admincentral.AdmincentralVaadinServlet.service(AdmincentralVaadinServlet.java:131)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at [...]

The problem remains until I close and re-open the Pages app.

This has been observed on a 5.3 snapshot release (see environment).



 Comments   
Comment by Andreas Weder [ 06/Jun/14 ]

Just verified with latest eebundle build #3416 (06.06.2014 15:18:51): this still happens.

I tried to reproduce this also by deleting the "Variants" node and all its variants. We get the same behavior. In this case, probably due to the exception, the master node is still marked as „having variants“.

Comment by Aleksandr Pchelintcev [ 11/Jun/14 ]

The issue fix could probably be more subtle/clear if the AppLifeCycleEvent#FOCUSED was propagated in all the relevant cases.

Generated at Mon Feb 12 09:01:54 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.