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

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

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • 17.4.2
    • Distribution
    • None
    • Windows 11 Pro, Firefox 140, using an instance of XWiki 17.4.2 on Oracle 19c, Tomcat 11.0.8
    • Unknown

    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]

      Attachments

        Activity

          People

            Unassigned Unassigned
            iandriuta Ilie Andriuta
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: