Details
-
Bug
-
Resolution: Fixed
-
Major
-
16.10.5
-
Windows 11 Pro, Firefox 137, using an instance of XWiki 17.2.0 on MySQL 9, Tomcat 11.0.5
-
Unknown
-
N/A
-
N/A
-
Description
Steps to reproduce
- Create an older instance of XWiki (I've used for this test XWiki 11.10.13 on MySQL 9.0/ Tomcat 9.0.102)
- Upgrade this instance to XWiki 17.2.0 by replacing the old WAR with the new one (and using a newer Tomcat version, I've tested with Tomcat 11.0.5)
- Start the instance and follow the Distribution Wizard
- Observe the logs (both from console and from the browser)
Expected results
No warnings are displayed in the logs.
Actual results
The following warnings are displayed in console:
2025-04-08 15:24:57,517 [XWiki initialization] WARN c.x.x.d.XWikiDocument - Abusive modification of the cached document [xwiki:Templates.Article.Template.WebHome()] java.lang.IllegalStateException: Abusive modification of the cached document at com.xpn.xwiki.doc.XWikiDocument.setMetaDataDirty(XWikiDocument.java:2457) at com.xpn.xwiki.doc.XWikiAttachmentContent.setContentDirty(XWikiAttachmentContent.java:233) at com.xpn.xwiki.doc.XWikiAttachmentContent$1.close(XWikiAttachmentContent.java:292) at com.xpn.xwiki.doc.XWikiAttachmentContent.setContent(XWikiAttachmentContent.java:326) at com.xpn.xwiki.doc.XWikiAttachmentContent.setContent(XWikiAttachmentContent.java:187) 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.load(SessionImpl.java:996) at org.hibernate.engine.spi.SessionDelegatorBaseImpl.load(SessionDelegatorBaseImpl.java:820) at com.xpn.xwiki.store.XWikiHibernateAttachmentStore.lambda$loadAttachmentContent$0(XWikiHibernateAttachmentStore.java:241) at com.xpn.xwiki.store.XWikiHibernateBaseStore.execute(XWikiHibernateBaseStore.java:851) at com.xpn.xwiki.store.XWikiHibernateBaseStore.executeRead(XWikiHibernateBaseStore.java:927) at com.xpn.xwiki.store.XWikiHibernateAttachmentStore.loadAttachmentContent(XWikiHibernateAttachmentStore.java:238) at com.xpn.xwiki.doc.XWikiAttachment.loadAttachmentContent(XWikiAttachment.java:1105) at com.xpn.xwiki.doc.XWikiAttachment.reloadAttachmentContent(XWikiAttachment.java:929) at com.xpn.xwiki.doc.XWikiAttachment.getContentInputStream(XWikiAttachment.java:907) at org.xwiki.extension.xar.internal.job.diff.AttachmentUnifiedDiffBuilder.contentEquals(AttachmentUnifiedDiffBuilder.java:131) at org.xwiki.extension.xar.internal.job.diff.AttachmentUnifiedDiffBuilder.addAttachmentDiff(AttachmentUnifiedDiffBuilder.java:90) at org.xwiki.extension.xar.internal.job.diff.DocumentUnifiedDiffBuilder.addAttachmentDiffs(DocumentUnifiedDiffBuilder.java:155) at org.xwiki.extension.xar.internal.job.diff.DocumentUnifiedDiffBuilder.diff(DocumentUnifiedDiffBuilder.java:89) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentCustomizationDetector.isCustomized(InstalledExtensionDocumentCustomizationDetector.java:95) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentCustomizationDetector.lambda$isCustomized$0(InstalledExtensionDocumentCustomizationDetector.java:86) at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1685) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230) at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:637) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentCustomizationDetector.isCustomized(InstalledExtensionDocumentCustomizationDetector.java:86) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.updateCustomizedFlag(InstalledExtensionDocumentListener.java:132) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.addExtensionDocument(InstalledExtensionDocumentListener.java:153) at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1715) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.forEachExtensionDocument(InstalledExtensionDocumentListener.java:166) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.addExtensionDocuments(InstalledExtensionDocumentListener.java:147) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.lambda$addExtensionDocuments$1(InstalledExtensionDocumentListener.java:140) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.addExtensionDocuments(InstalledExtensionDocumentListener.java:140) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.onEvent(InstalledExtensionDocumentListener.java:115) at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:338) at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:303) at com.xpn.xwiki.internal.XWikiInitializerJob.runInternal(XWikiInitializerJob.java:117) at org.xwiki.job.AbstractJob.runInContext(AbstractJob.java:246) at org.xwiki.job.AbstractJob.run(AbstractJob.java:223) at java.base/java.lang.Thread.run(Thread.java:1583) 2025-04-08 15:24:57,743 [XWiki initialization] WARN c.x.x.d.XWikiDocument - Abusive modification of the cached document [xwiki:Templates.Encyclopedia.Template.WebHome()] java.lang.IllegalStateException: Abusive modification of the cached document at com.xpn.xwiki.doc.XWikiDocument.setMetaDataDirty(XWikiDocument.java:2457) at com.xpn.xwiki.doc.XWikiAttachmentContent.setContentDirty(XWikiAttachmentContent.java:233) at com.xpn.xwiki.doc.XWikiAttachmentContent$1.close(XWikiAttachmentContent.java:292) at com.xpn.xwiki.doc.XWikiAttachmentContent.setContent(XWikiAttachmentContent.java:326) at com.xpn.xwiki.doc.XWikiAttachmentContent.setContent(XWikiAttachmentContent.java:187) 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.load(SessionImpl.java:996) at org.hibernate.engine.spi.SessionDelegatorBaseImpl.load(SessionDelegatorBaseImpl.java:820) at com.xpn.xwiki.store.XWikiHibernateAttachmentStore.lambda$loadAttachmentContent$0(XWikiHibernateAttachmentStore.java:241) at com.xpn.xwiki.store.XWikiHibernateBaseStore.execute(XWikiHibernateBaseStore.java:851) at com.xpn.xwiki.store.XWikiHibernateBaseStore.executeRead(XWikiHibernateBaseStore.java:927) at com.xpn.xwiki.store.XWikiHibernateAttachmentStore.loadAttachmentContent(XWikiHibernateAttachmentStore.java:238) at com.xpn.xwiki.doc.XWikiAttachment.loadAttachmentContent(XWikiAttachment.java:1105) at com.xpn.xwiki.doc.XWikiAttachment.reloadAttachmentContent(XWikiAttachment.java:929) at com.xpn.xwiki.doc.XWikiAttachment.getContentInputStream(XWikiAttachment.java:907) at org.xwiki.extension.xar.internal.job.diff.AttachmentUnifiedDiffBuilder.contentEquals(AttachmentUnifiedDiffBuilder.java:131) at org.xwiki.extension.xar.internal.job.diff.AttachmentUnifiedDiffBuilder.addAttachmentDiff(AttachmentUnifiedDiffBuilder.java:90) at org.xwiki.extension.xar.internal.job.diff.DocumentUnifiedDiffBuilder.addAttachmentDiffs(DocumentUnifiedDiffBuilder.java:155) at org.xwiki.extension.xar.internal.job.diff.DocumentUnifiedDiffBuilder.diff(DocumentUnifiedDiffBuilder.java:89) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentCustomizationDetector.isCustomized(InstalledExtensionDocumentCustomizationDetector.java:95) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentCustomizationDetector.lambda$isCustomized$0(InstalledExtensionDocumentCustomizationDetector.java:86) at java.base/java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1685) at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:527) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:513) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230) at java.base/java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.allMatch(ReferencePipeline.java:637) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentCustomizationDetector.isCustomized(InstalledExtensionDocumentCustomizationDetector.java:86) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.updateCustomizedFlag(InstalledExtensionDocumentListener.java:132) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.addExtensionDocument(InstalledExtensionDocumentListener.java:153) at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1715) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.forEachExtensionDocument(InstalledExtensionDocumentListener.java:166) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.addExtensionDocuments(InstalledExtensionDocumentListener.java:147) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.lambda$addExtensionDocuments$1(InstalledExtensionDocumentListener.java:140) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.addExtensionDocuments(InstalledExtensionDocumentListener.java:140) at org.xwiki.extension.xar.internal.doc.InstalledExtensionDocumentListener.onEvent(InstalledExtensionDocumentListener.java:115) at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:338) at org.xwiki.observation.internal.DefaultObservationManager.notify(DefaultObservationManager.java:303) at com.xpn.xwiki.internal.XWikiInitializerJob.runInternal(XWikiInitializerJob.java:117) at org.xwiki.job.AbstractJob.runInContext(AbstractJob.java:246) at org.xwiki.job.AbstractJob.run(AbstractJob.java:223) at java.base/java.lang.Thread.run(Thread.java:1583)
and there are also many warnings in the browser's DW:
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:386) at com.xpn.xwiki.objects.BaseProperty.setValueDirty(BaseProperty.java:380) at com.xpn.xwiki.objects.BaseProperty.setValueDirty(BaseProperty.java:368) at com.xpn.xwiki.objects.NumberProperty.setValue(NumberProperty.java:54) at com.xpn.xwiki.objects.BaseProperty.apply(BaseProperty.java:342) at com.xpn.xwiki.objects.BaseCollection.apply(BaseCollection.java:971) at com.xpn.xwiki.doc.XWikiDocument.apply(XWikiDocument.java:9530) at com.xpn.xwiki.doc.XWikiDocument.apply(XWikiDocument.java:9430) 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.upgrade(XarExtensionHandler.java:169) at org.xwiki.extension.handler.internal.DefaultExtensionHandlerManager.upgrade(DefaultExtensionHandlerManager.java:139) at org.xwiki.extension.job.internal.AbstractExtensionJob.installExtension(AbstractExtensionJob.java:349) 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)