Uploaded image for project: 'User Directory'
  1. User Directory
  2. UD-271

Refactor the cache creation algorithm in UserDirectoryPageHandler

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Blocker Blocker
    • 2.11.8, 2.12.0
    • 2.11.6
    • None
    • 4.8.0 M11, 4.8.0 RC1
    • Oui

      It is currently not resilient to concurrent modifications

          [UD-271] Refactor the cache creation algorithm in UserDirectoryPageHandler

          hundred of stacks locked

          stackTrace:
          java.lang.Thread.State: WAITING (parking)
          at jdk.internal.misc.Unsafe.park(java.base@17.0.4.1/Native Method)
          - parking to wait for <0x000000061d5b4660> (a com.google.common.util.concurrent.SettableFuture)
          at java.util.concurrent.locks.LockSupport.park(java.base@17.0.4.1/LockSupport.java:211)
          at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:561)
          at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:111)
          at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:247)
          at com.google.common.cache.LocalCache$LoadingValueReference.waitForValue(LocalCache.java:3621)
          at com.google.common.cache.LocalCache$Segment.waitForLoadingValue(LocalCache.java:2210)
          at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2074)
          at com.google.common.cache.LocalCache.get(LocalCache.java:4012)
          at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4920)
          at org.ametys.plugins.core.impl.cache.GuavaCache.get(GuavaCache.java:139)
          at org.ametys.plugins.userdirectory.UserDirectoryPageHandler.getTransitionalPagesName(UserDirectoryPageHandler.java:363)
          at org.ametys.plugins.userdirectory.page.VirtualUserDirectoryPageFactory.getChildren(VirtualUserDirectoryPageFactory.java:109)
          at org.ametys.plugins.repository.AmetysObjectResolver.resolveVirtualChildren(AmetysObjectResolver.java:584)
          at org.ametys.plugins.repository.jcr.TraversableAmetysObjectHelper.getChildren(TraversableAmetysObjectHelper.java:226)
          at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObjectFactory.getChildren(DefaultTraversableAmetysObjectFactory.java:63)
          at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObject.getChildren(DefaultTraversableAmetysObject.java:76)
          at org.ametys.web.repository.page.jcr.AbstractSitemapElement.getChildrenPages(AbstractSitemapElement.java:105)
          at org.ametys.web.repository.page.jcr.AbstractSitemapElement.getChildrenPages(AbstractSitemapElement.java:98)
          at org.ametys.web.inputdata.SitemapSaxer$RepositoryPage.getChildren(SitemapSaxer.java:494)
          at org.ametys.web.inputdata.SitemapSaxer._saxPage(SitemapSaxer.java:257)
          at org.ametys.web.inputdata.SitemapSaxer._saxPages(SitemapSaxer.java:218)
          at org.ametys.web.inputdata.SitemapSaxer._saxPage(SitemapSaxer.java:260)
          at org.ametys.web.inputdata.SitemapSaxer._saxPages(SitemapSaxer.java:218)
          at org.ametys.web.inputdata.SitemapSaxer.toSAX(SitemapSaxer.java:193)
          at org.ametys.web.inputdata.SitemapInputData.toSAX(SitemapInputData.java:136)
          at org.ametys.web.inputdata.InputDataGenerator.generate(InputDataGenerator.java:161)

          Raphaël Franchet added a comment - hundred of stacks locked stackTrace: java.lang. Thread .State: WAITING (parking) at jdk.internal.misc.Unsafe.park(java.base@17.0.4.1/Native Method) - parking to wait for <0x000000061d5b4660> (a com.google.common.util.concurrent.SettableFuture) at java.util.concurrent.locks.LockSupport.park(java.base@17.0.4.1/LockSupport.java:211) at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:561) at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:111) at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:247) at com.google.common.cache.LocalCache$LoadingValueReference.waitForValue(LocalCache.java:3621) at com.google.common.cache.LocalCache$Segment.waitForLoadingValue(LocalCache.java:2210) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2074) at com.google.common.cache.LocalCache.get(LocalCache.java:4012) at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4920) at org.ametys.plugins.core.impl.cache.GuavaCache.get(GuavaCache.java:139) at org.ametys.plugins.userdirectory.UserDirectoryPageHandler.getTransitionalPagesName(UserDirectoryPageHandler.java:363) at org.ametys.plugins.userdirectory.page.VirtualUserDirectoryPageFactory.getChildren(VirtualUserDirectoryPageFactory.java:109) at org.ametys.plugins.repository.AmetysObjectResolver.resolveVirtualChildren(AmetysObjectResolver.java:584) at org.ametys.plugins.repository.jcr.TraversableAmetysObjectHelper.getChildren(TraversableAmetysObjectHelper.java:226) at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObjectFactory.getChildren(DefaultTraversableAmetysObjectFactory.java:63) at org.ametys.plugins.repository.jcr.DefaultTraversableAmetysObject.getChildren(DefaultTraversableAmetysObject.java:76) at org.ametys.web.repository.page.jcr.AbstractSitemapElement.getChildrenPages(AbstractSitemapElement.java:105) at org.ametys.web.repository.page.jcr.AbstractSitemapElement.getChildrenPages(AbstractSitemapElement.java:98) at org.ametys.web.inputdata.SitemapSaxer$RepositoryPage.getChildren(SitemapSaxer.java:494) at org.ametys.web.inputdata.SitemapSaxer._saxPage(SitemapSaxer.java:257) at org.ametys.web.inputdata.SitemapSaxer._saxPages(SitemapSaxer.java:218) at org.ametys.web.inputdata.SitemapSaxer._saxPage(SitemapSaxer.java:260) at org.ametys.web.inputdata.SitemapSaxer._saxPages(SitemapSaxer.java:218) at org.ametys.web.inputdata.SitemapSaxer.toSAX(SitemapSaxer.java:193) at org.ametys.web.inputdata.SitemapInputData.toSAX(SitemapInputData.java:136) at org.ametys.web.inputdata.InputDataGenerator.generate(InputDataGenerator.java:161)

            lbouchet Loïc Bouchet
            cedric Cédric Damioli
            Loïc Bouchet Loïc Bouchet
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: