This issue has been created
 
 
XWiki Platform / cid:jira-generated-image-avatar-239baab7-99e4-40d9-97da-5bcdd5f719f1 XWIKI-23112 Open

Abusive modification of the cached document when moving or renaming a page with children under another page with children

 
View issue   ยท   Add comment
 

Issue created

 
cid:jira-generated-image-avatar-7208e09a-883f-4040-8693-8e5ac917dac9 Ilie Andriuta created this issue on 15/Apr/25 16:47
 
Summary: Abusive modification of the cached document when moving or renaming a page with children under another page with children
Issue Type: cid:jira-generated-image-avatar-239baab7-99e4-40d9-97da-5bcdd5f719f1 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: cid:jira-generated-image-static-major-1b39b668-0395-4a40-abbd-c686776e6d9f Major
Reporter: Ilie Andriuta
Description:

Steps to reproduce

  1. Create 2 distinct pages with at least a child, like <server>/xwiki/bin/view/aa/bb/ and <server>/xwiki/bin/view/cc/dd/
  2. 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/
  3. 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).