|
Summary: |
Abusive modification of the cached document when moving or renaming a page with children under another page with children |
Issue Type: |
Bug |
Affects Versions: |
17.2.0 |
Assignee: |
Unassigned |
Attachments: |
1_Abusive_rename_17_2_0.png, 2_Abusive_rename_17_2_0.png, XWiki_17_2_1_Abusive_rename_1_child.png |
Components: |
Refactoring |
Created: |
15/Apr/25 16:47 |
Environment: |
Windows 11 Pro, Edge 135, using an instance of XWiki 17.2.1 on Oracle 19c, Tomcat 11.0.5, reproducible also on Jetty/HSQL demo |
Priority: |
Major |
Reporter: |
Ilie Andriuta |
Description: |
Steps to reproduce
- Create 2 distinct pages with at least a child, like <server>/xwiki/bin/view/aa/bb/ and <server>/xwiki/bin/view/cc/dd/
- Go to page cc and rename/ move it to page bb, with children, so the page structure will become <server>/xwiki/bin/view/aa/bb/cc/dd/
- Observe the rename log
Expected results No warnings are displayed. Actual results The following warning is displayed:
Abusive modification of the cached document
class java.lang.IllegalStateException: Abusive modification of the cached document
at com.xpn.xwiki.doc.XWikiDocument.setMetaDataDirty(XWikiDocument.java:2457)
at com.xpn.xwiki.doc.XWikiDocument.setParentReference(XWikiDocument.java:1289)
at org.xwiki.refactoring.internal.DefaultModelBridge.updateParentField(DefaultModelBridge.java:359)
at org.xwiki.refactoring.internal.listener.LegacyParentFieldUpdaterListener.processLocalEvent(LegacyParentFieldUpdaterListener.java:76)
at org.xwiki.observation.event.AbstractLocalEventListener.onEvent(AbstractLocalEventListener.java:85)
at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:338)
at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:303)
at org.xwiki.refactoring.internal.job.AbstractCopyOrMoveJob.copyOrMove(AbstractCopyOrMoveJob.java:398)
at org.xwiki.refactoring.internal.job.MoveJob.performRefactoring(MoveJob.java:108)
at org.xwiki.refactoring.internal.job.AbstractCopyOrMoveJob.maybePerformRefactoring(AbstractCopyOrMoveJob.java:351)
at org.xwiki.refactoring.internal.job.AbstractCopyOrMoveJob.lambda$visitSpace$0(AbstractCopyOrMoveJob.java:298)
at org.xwiki.refactoring.internal.job.AbstractEntityJob.visitDocumentNodes(AbstractEntityJob.java:295)
at org.xwiki.refactoring.internal.job.AbstractEntityJob.visitDocumentAncestorStep(AbstractEntityJob.java:328)
at org.xwiki.refactoring.internal.job.AbstractEntityJob.visitDocumentAncestor(AbstractEntityJob.java:313)
at org.xwiki.refactoring.internal.job.AbstractEntityJob.visitDocumentNodes(AbstractEntityJob.java:293)
at org.xwiki.refactoring.internal.job.AbstractEntityJob.visitDocuments(AbstractEntityJob.java:278)
at org.xwiki.refactoring.internal.job.AbstractCopyOrMoveJob.visitSpace(AbstractCopyOrMoveJob.java:296)
at org.xwiki.refactoring.internal.job.AbstractCopyOrMoveJob.process(AbstractCopyOrMoveJob.java:305)
at org.xwiki.refactoring.internal.job.AbstractCopyOrMoveJob.process(AbstractCopyOrMoveJob.java:267)
at org.xwiki.refactoring.internal.job.AbstractCopyOrMoveJob.process(AbstractCopyOrMoveJob.java:245)
at org.xwiki.refactoring.internal.job.AbstractCopyOrMoveJob.process(AbstractCopyOrMoveJob.java:125)
at org.xwiki.refactoring.internal.job.RenameJob.process(RenameJob.java:50)
at org.xwiki.refactoring.internal.job.AbstractEntityJobWithChecks.runInternal(AbstractEntityJobWithChecks.java:69)
at org.xwiki.refactoring.internal.job.AbstractCopyOrMoveJob.runInternal(AbstractCopyOrMoveJob.java:73)
at org.xwiki.job.AbstractJob.runInContext(AbstractJob.java:246)
at org.xwiki.job.AbstractJob.run(AbstractJob.java:223)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
This is quite a tricky one, since I couldn't reproduce it every time. Tested and reproduced also on XWiki 17.2.0 where the warning occurred twice on the same rename action (screenshot attached). |
|