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

Abusive modification of the cached document when deleting an annotation from the annotation box

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • 17.6.0-rc-1, 16.10.10
    • 17.2.0-rc-1
    • Annotations
    • None
    • Windows 11 Pro, Chrome 138, using an instance of XWiki 17.4.1 on PostgreSQL 17, Tomcat 11.0.8
    • Unknown

    Description

      Steps to reproduce

      1. Go to a page that has some text content
      2. Select a word and press CTRL+M to add an annotation
      3. On the annotated word, click on the small yellow button in the upper right
      4. Click 'Delete annotation' button
      5. Click 'Yes' button

      Expected results

      No warnings are displayed.

      Actual results

      The following stacktrace is displayed in XWiki logs:

      2025-07-01 15:55:15,220 [http-nio-1115-exec-7 - http://localhost:1115/xwiki/rest/wikis/xwiki/spaces/aha/pages/ata/annotation/0?method=DELETE&media=json] WARN  c.x.x.d.XWikiDocument          - Abusive modification of the cached document [xwiki:aha.ata()]
      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.setXObjectsToRemove(XWikiDocument.java:6292)
              at com.xpn.xwiki.store.XWikiHibernateStore.saveXWikiDoc(XWikiHibernateStore.java:714)
              at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:277)
              at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:239)
              at com.xpn.xwiki.XWiki.saveDocument(XWiki.java:2113)
              at com.xpn.xwiki.XWiki.saveDocument(XWiki.java:2008)
              at org.xwiki.annotation.io.internal.DefaultIOService.removeAnnotation(DefaultIOService.java:303)
              at org.xwiki.annotation.internal.DefaultAnnotationService.removeAnnotation(DefaultAnnotationService.java:164)
              at org.xwiki.annotation.rest.internal.SingleAnnotationRESTResource.doDelete(SingleAnnotationRESTResource.java:88)
              at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
              at java.base/java.lang.reflect.Method.invoke(Method.java:580)
              at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
              at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
              at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
              at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219)
              at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
              at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
              at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
              at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
              at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)
              at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
              at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
              at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
              at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
              at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
              at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
              at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
              at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)
              at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:397)
              at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:349)
              at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:379)
              at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312)
              at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
              at org.xwiki.rest.jersey.internal.JerseyServletContainer.service(JerseyServletContainer.java:139)
              at org.xwiki.rest.jersey.internal.XWikiRESTServlet.service(XWikiRESTServlet.java:95)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:130)
              at com.xpn.xwiki.web.XWikiContextInitializationFilter.doFilter(XWikiContextInitializationFilter.java:72)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
              at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
              at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:66)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
              at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:135)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
              at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:211)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
              at org.xwiki.container.servlet.filters.internal.SafeRedirectFilter.doFilter(SafeRedirectFilter.java:106)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
              at org.xwiki.container.servlet.filters.internal.ResolveRelativeRedirectFilter.doFilter(ResolveRelativeRedirectFilter.java:129)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
              at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:120)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:109)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:79)
              at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
              at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:666)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
              at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:396)
              at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
              at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903)
              at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1773)
              at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
              at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
              at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
              at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:59)
              at java.base/java.lang.Thread.run(Thread.java:1583)

       

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated: