This issue has been created
There is 1 comment.
 
 
XWiki Platform / cid:jira-generated-image-avatar-8ff70e0d-2765-4cba-8e60-8f27ab82dda1 XWIKI-23353 Open

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

 
View issue   ยท   Add comment
 

Issue created

 
cid:jira-generated-image-avatar-90daa3de-1a7f-465b-8970-36cbe09bf1a1 Ilie Andriuta created this issue on 01/Jul/25 15:50
 
Summary: Abusive modification of the cached document when deleting an annotation from the annotation box
Issue Type: cid:jira-generated-image-avatar-8ff70e0d-2765-4cba-8e60-8f27ab82dda1 Bug
Affects Versions: 17.2.0-rc-1
Assignee: Unassigned
Components: Annotations
Created: 01/Jul/25 15:50
Environment: Windows 11 Pro, Chrome 138, using an instance of XWiki 17.4.1 on PostgreSQL 17, Tomcat 11.0.8
Priority: cid:jira-generated-image-static-major-70a1eabd-f849-48f5-bdf7-ea9ae9c67b4e Major
Reporter: Ilie Andriuta
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)

 

 
 

1 comment

 
cid:jira-generated-image-avatar-90daa3de-1a7f-465b-8970-36cbe09bf1a1 Ilie Andriuta on 01/Jul/25 15:53
 

The issue doesn't reproduce if the annotation is deleted from the 'Comments' tab.