Uploaded image for project: 'XWiki Platform'
  1. XWiki Platform
  2. XWIKI-23108

Abusive modification of the cached document when installing a XAR extension

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 16.10.6, 17.3.0-rc-1, 17.2.2
    • 16.10.5
    • Extension - XAR
    • Windows 11 Pro, Edge 135, using an instance of XWiki 17.2.1 on Oracle 19c, Tomcat 11, reproducible also on Jetty/HSQL
    • Unknown
    • N/A
    • N/A

    Description

      Steps to reproduce

      1. Create an instance of XWiki 17.2.1 (tested on Oracle 19c/ Tomcat 11.0.5 and on Jetty/HSQL demo version)
      2. Observe the logs from the Distribution Wizard

      Expected results

      No warnings/ errors are displayed.

      Actual results

      The following warnings are displayed in Distribution Wizard logs:

      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.setOwnerDocument(BaseElement.java:522)
          at com.xpn.xwiki.objects.BaseCollection.setOwnerDocument(BaseCollection.java:994)
          at com.xpn.xwiki.objects.BaseCollection.addField(BaseCollection.java:546)
          at com.xpn.xwiki.objects.classes.BaseClass.addField(BaseClass.java:196)
          at com.xpn.xwiki.objects.BaseCollection.safeput(BaseCollection.java:272)
          at com.xpn.xwiki.objects.BaseCollection.apply(BaseCollection.java:968)
          at com.xpn.xwiki.objects.classes.BaseClass.apply(BaseClass.java:1590)
          at com.xpn.xwiki.doc.AbstractMandatoryClassInitializer.updateDocument(AbstractMandatoryClassInitializer.java:78)
          at org.xwiki.annotation.internal.AnnotationClassDocumentInitializer.updateDocument(AnnotationClassDocumentInitializer.java:95)
          at org.xwiki.annotation.internal.CheckAnnotationClassEventListener.onEvent(CheckAnnotationClassEventListener.java:114)
          at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:338)
          at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:303)
          at com.xpn.xwiki.XWiki.afterSave(XWiki.java:2040)
          at com.xpn.xwiki.XWiki.saveDocument(XWiki.java:2130)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.saveDocumentSetContextUser(DocumentMergeImporter.java:208)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.saveDocument(DocumentMergeImporter.java:154)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.importDocument(DocumentMergeImporter.java:117)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importDocumentToWiki(Packager.java:230)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXARToWiki(Packager.java:184)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXARToWiki(Packager.java:157)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXAR(Packager.java:148)
          at org.xwiki.extension.xar.internal.handler.XarExtensionHandler.installInternal(XarExtensionHandler.java:189)
          at org.xwiki.extension.xar.internal.handler.XarExtensionHandler.install(XarExtensionHandler.java:150)
          at org.xwiki.extension.handler.internal.DefaultExtensionHandlerManager.install(DefaultExtensionHandlerManager.java:85)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.installExtension(AbstractExtensionJob.java:330)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.applyAction(AbstractExtensionJob.java:233)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.applyActions(AbstractExtensionJob.java:181)
          at org.xwiki.extension.job.internal.InstallJob.runInternal(InstallJob.java:140)
          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)

      and

      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 com.xpn.xwiki.objects.BaseProperty.apply(BaseProperty.java:369)
          at com.xpn.xwiki.objects.BaseCollection.apply(BaseCollection.java:977)
          at com.xpn.xwiki.doc.XWikiDocument.apply(XWikiDocument.java:9555)
          at com.xpn.xwiki.doc.XWikiDocument.apply(XWikiDocument.java:9455)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.saveDocument(DocumentMergeImporter.java:142)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.importDocument(DocumentMergeImporter.java:117)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importDocumentToWiki(Packager.java:230)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXARToWiki(Packager.java:184)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXARToWiki(Packager.java:157)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXAR(Packager.java:148)
          at org.xwiki.extension.xar.internal.handler.XarExtensionHandler.installInternal(XarExtensionHandler.java:189)
          at org.xwiki.extension.xar.internal.handler.XarExtensionHandler.install(XarExtensionHandler.java:150)
          at org.xwiki.extension.handler.internal.DefaultExtensionHandlerManager.install(DefaultExtensionHandlerManager.java:85)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.installExtension(AbstractExtensionJob.java:330)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.applyAction(AbstractExtensionJob.java:233)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.applyActions(AbstractExtensionJob.java:181)
          at org.xwiki.extension.job.internal.InstallJob.runInternal(InstallJob.java:140)
          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)

       
      Also, on Jetty/HSQL I was able to reproduce also the following error (may have the same cause of the warnings and may be reproducible also on Tomcat, but it just didn't occur at the time I was testing):

      A different object with the same identifier value was already associated with the session : [com.xpn.xwiki.doc.XWikiDocument#6152552094868048244] : [<null entity name>#<null>]
      class com.xpn.xwiki.XWikiException: Error number 0 in 0: Error number 3201 in 3: Exception while saving document xwiki:XWiki.XWikiPreferences
          at com.xpn.xwiki.store.XWikiHibernateStore.saveXWikiDoc(XWikiHibernateStore.java:793)
          at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:275)
          at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:235)
          at com.xpn.xwiki.XWiki.saveDocument(XWiki.java:2113)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.saveDocumentSetContextUser(DocumentMergeImporter.java:208)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.saveDocument(DocumentMergeImporter.java:154)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.importDocument(DocumentMergeImporter.java:117)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importDocumentToWiki(Packager.java:230)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXARToWiki(Packager.java:184)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXARToWiki(Packager.java:157)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXAR(Packager.java:148)
          at org.xwiki.extension.xar.internal.handler.XarExtensionHandler.installInternal(XarExtensionHandler.java:189)
          at org.xwiki.extension.xar.internal.handler.XarExtensionHandler.install(XarExtensionHandler.java:150)
          at org.xwiki.extension.handler.internal.DefaultExtensionHandlerManager.install(DefaultExtensionHandlerManager.java:85)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.installExtension(AbstractExtensionJob.java:330)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.applyAction(AbstractExtensionJob.java:233)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.applyActions(AbstractExtensionJob.java:181)
          at org.xwiki.extension.job.internal.InstallJob.runInternal(InstallJob.java:140)
          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)
      Caused by: class org.hibernate.NonUniqueObjectException: A different object with the same identifier value was already associated with the session : [com.xpn.xwiki.doc.XWikiDocument#6152552094868048244] : [<null entity name>#<null>]
          at org.hibernate.engine.internal.StatefulPersistenceContext.checkUniqueness(StatefulPersistenceContext.java:700)
          at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:287)
          at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:230)
          at org.hibernate.event.internal.DefaultUpdateEventListener.performSaveOrUpdate(DefaultUpdateEventListener.java:38)
          at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:75)
          at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107)
          at org.hibernate.internal.SessionImpl.fireUpdate(SessionImpl.java:694)
          at org.hibernate.internal.SessionImpl.update(SessionImpl.java:687)
          at org.hibernate.internal.SessionImpl.update(SessionImpl.java:682)
          at org.hibernate.engine.spi.SessionDelegatorBaseImpl.update(SessionDelegatorBaseImpl.java:855)
          at com.xpn.xwiki.store.XWikiHibernateStore.saveXWikiDoc(XWikiHibernateStore.java:706)
          at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:275)
          at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:235)
          at com.xpn.xwiki.XWiki.saveDocument(XWiki.java:2113)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.saveDocumentSetContextUser(DocumentMergeImporter.java:208)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.saveDocument(DocumentMergeImporter.java:154)
          at org.xwiki.extension.xar.internal.handler.packager.DocumentMergeImporter.importDocument(DocumentMergeImporter.java:117)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importDocumentToWiki(Packager.java:230)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXARToWiki(Packager.java:184)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXARToWiki(Packager.java:157)
          at org.xwiki.extension.xar.internal.handler.packager.Packager.importXAR(Packager.java:148)
          at org.xwiki.extension.xar.internal.handler.XarExtensionHandler.installInternal(XarExtensionHandler.java:189)
          at org.xwiki.extension.xar.internal.handler.XarExtensionHandler.install(XarExtensionHandler.java:150)
          at org.xwiki.extension.handler.internal.DefaultExtensionHandlerManager.install(DefaultExtensionHandlerManager.java:85)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.installExtension(AbstractExtensionJob.java:330)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.applyAction(AbstractExtensionJob.java:233)
          at org.xwiki.extension.job.internal.AbstractExtensionJob.applyActions(AbstractExtensionJob.java:181)
          at org.xwiki.extension.job.internal.InstallJob.runInternal(InstallJob.java:140)
          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)

      No warnings/ errors on XWiki console. The issue couldn't be reproduced on XWiki 17.2.0.

      Attachments

        Issue Links

          Activity

            People

              tmortagne Thomas Mortagne
              iandriuta Ilie Andriuta
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: