This issue has been created
 
 
XWiki Platform / cid:jira-generated-image-avatar-b9330046-b4ac-441c-939e-e4375e3ea0fa XWIKI-23365 Open

Abusive modification of the cached document on Distribution Wizard under some deletion events when upgrading XWiki

 
View issue   ·   Add comment
 

Issue created

 
cid:jira-generated-image-avatar-9f1abfda-03f9-43fb-b2e5-b0ad89640a6f Ilie Andriuta created this issue on 09/Jul/25 18:02
 
Summary: Abusive modification of the cached document on Distribution Wizard under some deletion events when upgrading XWiki
Issue Type: cid:jira-generated-image-avatar-b9330046-b4ac-441c-939e-e4375e3ea0fa Bug
Affects Versions: 17.4.2
Assignee: Unassigned
Attachments: DW_Abusive_Oracle_13_4_7_to_17_4_2.png, DW_Abusive_Oracle_13_4_7_to_17_4_2_subwiki.png
Components: Distribution
Created: 09/Jul/25 18:02
Environment: Windows 11 Pro, Firefox 140, using an instance of XWiki 17.4.2 on Oracle 19c, Tomcat 11.0.8
Priority: cid:jira-generated-image-static-major-17df09b7-76aa-42b1-bad4-96d1af5a64dd Major
Reporter: Ilie Andriuta
Description:

Steps to reproduce

  1. Upgrade an instance of XWiki 13.4.7 (optional, having a subwiki) to 17.4.2 (I've tested with Firefox 140/ Oracle 19c/ Tomcat 11.0.8)
  2. Observe the DW logs

Expected results

No errors/ warnings are displayed.

Actual results

When upgrading Main Wiki, after some document deletion events, the following stacktrace is displayed 8 times (each time after a deletion event):

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.objects.BaseElement.setDirty(BaseElement.java:133)
    at com.xpn.xwiki.objects.BaseProperty.setDirty(BaseProperty.java:413)
    at com.xpn.xwiki.objects.BaseProperty.setValueDirty(BaseProperty.java:407)
    at com.xpn.xwiki.objects.BaseStringProperty.setValue(BaseStringProperty.java:61)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.hibernate.property.access.spi.SetterMethodImpl.set(SetterMethodImpl.java:45)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:694)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:144)
    at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:5281)
    at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntityFromEntityEntryLoadedState(TwoPhaseLoad.java:253)
    at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:156)
    at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:126)
    at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.performTwoPhaseLoad(AbstractRowReader.java:221)
    at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(AbstractRowReader.java:187)
    at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:96)
    at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:105)
    at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:285)
    at org.hibernate.persister.entity.AbstractEntityPersister.doLoad(AbstractEntityPersister.java:4550)
    at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4540)
    at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:571)
    at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:539)
    at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:208)
    at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:327)
    at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:108)
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:74)
    at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
    at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1231)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1220)
    at org.hibernate.internal.SessionImpl.access$2100(SessionImpl.java:202)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2848)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.lambda$load$1(SessionImpl.java:2825)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.perform(SessionImpl.java:2781)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2825)
    at org.hibernate.internal.SessionImpl.get(SessionImpl.java:1019)
    at org.hibernate.engine.spi.SessionDelegatorBaseImpl.get(SessionDelegatorBaseImpl.java:1000)
    at com.xpn.xwiki.store.XWikiHibernateStore.deleteXWikiCollection(XWikiHibernateStore.java:1751)
    at com.xpn.xwiki.store.XWikiHibernateStore.deleteXWikiDoc(XWikiHibernateStore.java:1309)
    at com.xpn.xwiki.store.XWikiHibernateStore.deleteXWikiDoc(XWikiHibernateStore.java:1254)
    at com.xpn.xwiki.store.XWikiCacheStore.deleteXWikiDoc(XWikiCacheStore.java:485)
    at com.xpn.xwiki.XWiki.deleteDocument(XWiki.java:4668)
    at com.xpn.xwiki.XWiki.deleteDocument(XWiki.java:4590)
    at com.xpn.xwiki.XWiki.deleteDocument(XWiki.java:4585)
    at org.xwiki.extension.xar.internal.handler.packager.Packager.deleteDocument(Packager.java:289)
    at org.xwiki.extension.xar.internal.handler.XarExtensionJobFinishedListener.deletePages(XarExtensionJobFinishedListener.java:300)
    at org.xwiki.extension.xar.internal.handler.XarExtensionJobFinishedListener.maybeDeletePages(XarExtensionJobFinishedListener.java:278)
    at org.xwiki.extension.xar.internal.handler.XarExtensionJobFinishedListener.onEvent(XarExtensionJobFinishedListener.java:156)
    at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:338)
    at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:303)
    at org.xwiki.job.AbstractJob.jobFinished(AbstractJob.java:297)
    at org.xwiki.extension.job.internal.AbstractExtensionJob.jobFinished(AbstractExtensionJob.java:134)
    at org.xwiki.job.AbstractJob.runInContext(AbstractJob.java:251)
    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) 

 
The deletion events after which the stacktrace is displayed, are:

  • Deleted document [Home » Panels » SpaceDocs]
  • Deleted document [Home » Main » SpaceIndex]
  • Deleted document [Home » Main » Spaces]
  • Deleted document [Home » XWiki » RegistrationHelp]
  • Deleted document [Home » XWiki » GoogleAnalyticsCode]
  • Deleted document [Home » XWiki » Notifications » Code » NotificationFilterPreferenceLivetableResults]
  • Deleted document [Home » XWiki » ResetPasswordComplete]
  • Deleted document [Home » Panels » Spaces]

In addition to those above, when upgrading the subwiki, the warning is also displayed after the following event:

  • Deleted document [subwikiglobal » XWiki » ResetPassword]