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

The current user property update REST endpoint is modifying the cached document

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 17.2.0-rc-1, 16.10.5
    • 16.10.4
    • REST
    • None
    • Unknown
    • N/A
    • N/A

    Description

      I just obtained the following stacktrace when switching to advanded user using shortcuts while being logged with Admin:

      2025-02-21 11:18:29,097 [qtp1601292138-964 - http://localhost:8080/xwiki/rest/currentuser/properties/usertype/next] WARN  c.x.x.d.XWikiDocument          - Abusive modification of the cached document [xwiki:XWiki.Admin()] 
      java.lang.IllegalStateException: Abusive modification of the cached document
      	at com.xpn.xwiki.doc.XWikiDocument.setMetaDataDirty(XWikiDocument.java:2436)
      	at com.xpn.xwiki.objects.BaseElement.setOwnerDocument(BaseElement.java:468)
      	at com.xpn.xwiki.objects.BaseObject.set(BaseObject.java:369)
      	at org.xwiki.rest.internal.resources.user.CurrentUserPropertyResourceImpl.setNextPropertyValue(CurrentUserPropertyResourceImpl.java:104)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
      	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$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
      	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:62)
      	at org.eclipse.jetty.ee10.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1379)
      	at org.eclipse.jetty.ee10.servlet.ServletHolder.handle(ServletHolder.java:736)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1619)
      	at com.xpn.xwiki.web.XWikiContextInitializationFilter.doFilter(XWikiContextInitializationFilter.java:72)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1591)
      	at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:66)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1591)
      	at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:135)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1591)
      	at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:211)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1591)
      	at org.xwiki.container.servlet.filters.internal.SafeRedirectFilter.doFilter(SafeRedirectFilter.java:106)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1591)
      	at org.xwiki.container.servlet.filters.internal.ResolveRelativeRedirectFilter.doFilter(ResolveRelativeRedirectFilter.java:129)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1591)
      	at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:120)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:208)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1591)
      	at org.eclipse.jetty.ee10.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:195)
      	at org.eclipse.jetty.ee10.servlet.FilterHolder.doFilter(FilterHolder.java:205)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1591)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler$MappedServlet.handle(ServletHandler.java:1552)
      	at org.eclipse.jetty.ee10.servlet.ServletChannel.dispatch(ServletChannel.java:819)
      	at org.eclipse.jetty.ee10.servlet.ServletChannel.handle(ServletChannel.java:436)
      	at org.eclipse.jetty.ee10.servlet.ServletHandler.handle(ServletHandler.java:469)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:575)
      	at org.eclipse.jetty.ee10.servlet.SessionHandler.handle(SessionHandler.java:717)
      	at org.eclipse.jetty.server.handler.ContextHandler.handle(ContextHandler.java:1060)
      	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:181)
      	at org.eclipse.jetty.server.Server.handle(Server.java:182)
      	at org.eclipse.jetty.server.internal.HttpChannelState$HandlerInvoker.run(HttpChannelState.java:662)
      	at org.eclipse.jetty.server.internal.HttpConnection.onFillable(HttpConnection.java:418)
      	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
      	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:480)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:443)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
      	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
      	at java.base/java.lang.Thread.run(Thread.java:840)
      
      

      Attachments

        Issue Links

          Activity

            People

              tmortagne Thomas Mortagne
              surli Simon Urli
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: