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

Security Cache ConflictingInsertionException

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Critical
    • 14.10.20, 15.10.1, 15.5.5
    • 14.10.18
    • Security
    • None
    • Unit
    • Unknown
    • N/A
    • N/A

    Description

      Reproduction steps:

      • Build locally Words notification application on commit f7ac74169a3dac376c884f11d1bb2b4f5c77475e
      • Create a fresh demo wiki
      • Start and login with Admin
      • Install version 1.0-SNAPSHOT of Words notification application and do *not* restart
      • Click on the Admin user profile link from the top menu (next to the bell)
      • Click on the "Word-based notification" tab
      • Add a new word to query
      • Click on the "Notifications" tab
      • Switch on alert notification for Word-based notification
      • Click again on "Word-based notification" tab
      • Add a new word to query

      At this point, or maybe even before at first insertion of a word query, I'm getting this kind of stack trace:

      2023-10-17 16:41:11,270 [qtp439904756-34 - http://localhost:8080/xwiki/bin/get/XWiki/Notifications/Code/NotificationFilterPreferenceLivetableResults?outputSyntax=plain&transprefix=notifications.settings.filters.preferences.custom.table.&classname=&collist=name%2CfilterType%2CeventTypes%2CnotificationFormats%2CisEnabled&queryFilters=currentlanguage%2Chidden&eventType=&format=&type=custom&user=xwiki:XWiki.Admin&offset=1&limit=10&reqNo=1] ERROR a.i.BridgeAuthorizationManager - Failed to load rights for user [xwiki:XWiki.Admin] on [xwiki:XWiki.Notifications.Code.NotificationsDisplayerUIX]. 
      org.xwiki.security.authorization.AuthorizationException: Failed to load the cache in 5 attempts. Giving up. when checking  access to [xwiki:XWiki.Notifications.Code.NotificationsDisplayerUIX] for user [xwiki:XWiki.Admin]
      	at org.xwiki.security.authorization.cache.internal.DefaultSecurityCacheLoader.load(DefaultSecurityCacheLoader.java:175)
      	at org.xwiki.security.authorization.DefaultAuthorizationManager.getAccess(DefaultAuthorizationManager.java:252)
      	at org.xwiki.security.authorization.DefaultAuthorizationManager.evaluateSecurityAccess(DefaultAuthorizationManager.java:169)
      	at org.xwiki.security.authorization.DefaultAuthorizationManager.hasSecurityAccess(DefaultAuthorizationManager.java:162)
      	at org.xwiki.security.authorization.DefaultAuthorizationManager.hasAccess(DefaultAuthorizationManager.java:119)
      	at org.xwiki.security.authorization.internal.BridgeAuthorizationManager.hasAccess(BridgeAuthorizationManager.java:67)
      	at org.xwiki.security.authorization.internal.DefaultContextualAuthorizationManager.hasAccess(DefaultContextualAuthorizationManager.java:122)
      	at org.xwiki.security.authorization.internal.DefaultContextualAuthorizationManager.hasAccess(DefaultContextualAuthorizationManager.java:117)
      	at com.xpn.xwiki.plugin.skinx.AbstractDocumentSkinExtensionPlugin.isAccessible(AbstractDocumentSkinExtensionPlugin.java:450)
      	at com.xpn.xwiki.plugin.skinx.CssSkinExtensionPlugin.getLink(CssSkinExtensionPlugin.java:81)
      	at com.xpn.xwiki.plugin.skinx.AbstractSkinExtensionPlugin.getImportString(AbstractSkinExtensionPlugin.java:344)
      	at com.xpn.xwiki.plugin.skinx.AbstractSkinExtensionPlugin.endParsing(AbstractSkinExtensionPlugin.java:445)
      	at com.xpn.xwiki.plugin.skinx.AbstractDocumentSkinExtensionPlugin.endParsing(AbstractDocumentSkinExtensionPlugin.java:336)
      	at com.xpn.xwiki.plugin.skinx.CssSkinExtensionPlugin.endParsing(CssSkinExtensionPlugin.java:116)
      	at com.xpn.xwiki.plugin.XWikiPluginManager.endParsing(XWikiPluginManager.java:272)
      	at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:184)
      	at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:89)
      	at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:675)
      	at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:339)
      	at com.xpn.xwiki.web.LegacyActionServlet.service(LegacyActionServlet.java:114)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
      	at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1419)
      	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)
      	at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1624)
      	at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:122)
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:61)
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.container.servlet.filters.internal.SetHTTPHeaderFilter.doFilter(SetHTTPHeaderFilter.java:63)
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.resource.servlet.RoutingFilter.doFilter(RoutingFilter.java:132)
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:164)
      	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
      	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1594)
      	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:506)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
      	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
      	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1571)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
      	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1378)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
      	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:463)
      	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1544)
      	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
      	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1300)
      	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
      	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:192)
      	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
      	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
      	at org.eclipse.jetty.server.Server.handle(Server.java:562)
      	at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:418)
      	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:675)
      	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:410)
      	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
      	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:319)
      	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
      	at org.eclipse.jetty.io.SocketChannelEndPoint$1.run(SocketChannelEndPoint.java:101)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:412)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:381)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:268)
      	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:138)
      	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:407)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:894)
      	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1038)
      	at java.base/java.lang.Thread.run(Thread.java:829)
      Caused by: org.xwiki.security.authorization.cache.ConflictingInsertionException: Another thread has inserted an entry [entity = [Document xwiki:XWiki.Admin], rules = [[State = [ALLOW], Rights = [[creator]], Users = [[xwiki:XWiki.superadmin]], Groups = []], [State = [ALLOW], Rights = [[edit]], Users = [[xwiki:XWiki.XWikiAdminGroup]], Groups = [[xwiki:XWiki.XWikiAdminGroup]]], [State = [ALLOW], Rights = [[edit]], Users = [[xwiki:XWiki.Admin]], Groups = []]]] which is different from entry [entity = [Document xwiki:XWiki.Admin], rules = [[State = [ALLOW], Rights = [[creator]], Users = [[xwiki:XWiki.superadmin]], Groups = []], [State = [ALLOW], Rights = [[edit]], Users = [[xwiki:XWiki.XWikiAdminGroup]], Groups = [[xwiki:XWiki.XWikiAdminGroup]]], [State = [ALLOW], Rights = [[edit]], Users = [[xwiki:XWiki.Admin]], Groups = []]]] with key [n@@DOCUMENT:xwiki:XWiki.Admin] and groups [[Document xwiki:XWiki.XWikiAdminGroup, Document xwiki:XWiki.XWikiAllGroup]]
      	at org.xwiki.security.authorization.cache.internal.DefaultSecurityCache.isAlreadyInserted(DefaultSecurityCache.java:677)
      	at org.xwiki.security.authorization.cache.internal.DefaultSecurityCache.add(DefaultSecurityCache.java:758)
      	at org.xwiki.security.authorization.cache.internal.DefaultSecurityCache.add(DefaultSecurityCache.java:731)
      	at org.xwiki.security.authorization.cache.internal.DefaultSecurityCacheLoader.loadUserEntry(DefaultSecurityCacheLoader.java:430)
      	at org.xwiki.security.authorization.cache.internal.DefaultSecurityCacheLoader.loadUserEntry(DefaultSecurityCacheLoader.java:329)
      	at org.xwiki.security.authorization.cache.internal.DefaultSecurityCacheLoader.loadAccessEntries(DefaultSecurityCacheLoader.java:232)
      	at org.xwiki.security.authorization.cache.internal.DefaultSecurityCacheLoader.loadRequiredEntries(DefaultSecurityCacheLoader.java:204)
      	at org.xwiki.security.authorization.cache.internal.DefaultSecurityCacheLoader.load(DefaultSecurityCacheLoader.java:157)
      	... 77 common frames omitted
      

      Attachments

        Issue Links

          Activity

            People

              MichaelHamann Michael Hamann
              surli Simon Urli
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: