Uploaded image for project: 'Ranker'
  1. Ranker
  2. MGNLRANK-21

User-based search result ranking break the search for external users

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Neutral Neutral
    • 1.0.1
    • 1.0.0
    • None
    • Yes
    • Yes
    • Yes
    • Yes

      Steps to reproduce

      1.  For existing customers who use SSO module when upgrading to our latest version Magnolia 6.2.39
      2.  The User-based search result ranking module installed by default and integrates to our search bar
      3. System can not search anymore due to error shown in below log:
        2023-09-21 13:50:01,449 ERROR gnolia.admincentral.findbar.search.ResultCollector: An error occurred during the search process, therefore an empty collection will be returned.
        java.util.concurrent.CompletionException: java.lang.RuntimeException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.UnsupportedOperationException: not implemented for this ExternalUser
        	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273) ~[?:1.8.0_292]
        	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280) ~[?:1.8.0_292]
        	at java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1606) ~[?:1.8.0_292]
        	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java) ~[?:1.8.0_292]
        	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_292]
        	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_292]
        	at java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:652) ~[?:1.8.0_292]
        	at java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:649) ~[?:1.8.0_292]
        	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_292]
        	at java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:649) ~[?:1.8.0_292]
        	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]
        Caused by: java.lang.RuntimeException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.UnsupportedOperationException: not implemented for this ExternalUser
        	at info.magnolia.periscope.Periscope.lambda$search$1(Periscope.java:125) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at info.magnolia.periscope.search.SearchRunner.lambda$execute$0(SearchRunner.java:98) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1604) ~[?:1.8.0_292]
        	... 8 more
        Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.UnsupportedOperationException: not implemented for this ExternalUser
        	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2086) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache.get(LocalCache.java:4012) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4035) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5013) ~[guava-32.1.2-jre.jar:?]
        	at info.magnolia.periscope.Periscope.getResultRanker(Periscope.java:188) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at info.magnolia.periscope.Periscope.fetchSupplierAwareSearchResults(Periscope.java:139) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at info.magnolia.periscope.Periscope.lambda$null$0(Periscope.java:123) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at info.magnolia.context.AsynchronousContext$OperationFactory.lambda$wrap$0(AsynchronousContext.java:122) ~[magnolia-core-6.2.39.jar:?]
        	at info.magnolia.periscope.Periscope.lambda$search$1(Periscope.java:123) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at info.magnolia.periscope.search.SearchRunner.lambda$execute$0(SearchRunner.java:98) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1604) ~[?:1.8.0_292]
        	... 8 more
        Caused by: java.lang.UnsupportedOperationException: not implemented for this ExternalUser
        	at info.magnolia.cms.security.ExternalUser.getIdentifier(ExternalUser.java:194) ~[magnolia-core-6.2.39.jar:?]
        	at info.magnolia.rank.rating.UserRatingsManager.setupUserRatings(UserRatingsManager.java:87) ~[magnolia-user-result-ranker-1.0.0.jar:?]
        	at info.magnolia.rank.UserResultRanker.<init>(UserResultRanker.java:55) ~[magnolia-user-result-ranker-1.0.0.jar:?]
        	at info.magnolia.rank.UserResultRankerFactory.createRanker(UserResultRankerFactory.java:46) ~[magnolia-user-result-ranker-1.0.0.jar:?]
        	at com.google.common.cache.CacheLoader$FunctionToCacheLoader.load(CacheLoader.java:169) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3571) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2313) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2190) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2080) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache.get(LocalCache.java:4012) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4035) ~[guava-32.1.2-jre.jar:?]
        	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5013) ~[guava-32.1.2-jre.jar:?]
        	at info.magnolia.periscope.Periscope.getResultRanker(Periscope.java:188) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at info.magnolia.periscope.Periscope.fetchSupplierAwareSearchResults(Periscope.java:139) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at info.magnolia.periscope.Periscope.lambda$null$0(Periscope.java:123) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at info.magnolia.context.AsynchronousContext$OperationFactory.lambda$wrap$0(AsynchronousContext.java:122) ~[magnolia-core-6.2.39.jar:?]
        	at info.magnolia.periscope.Periscope.lambda$search$1(Periscope.java:123) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at info.magnolia.periscope.search.SearchRunner.lambda$execute$0(SearchRunner.java:98) ~[magnolia-periscope-core-1.2.10.jar:?]
        	at java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1604) ~[?:1.8.0_292]
        

      .. Logs, screenshots, gifs...

      Expected results

      • We need to bring back the search function to Magnolia for these customers
      • Would be great if we can assist for external users, otherwise, please detect the user type before doing stuffs

      .. Justify non-trivial expectations with a link to a doc or a relevant discussion.

      Actual results

      • As said, it blocks users from doing search, search bar become unusable.

      Workaround

      • N/A

        Development notes

      • Reference code in this link.

        Acceptance criteria

              asoto Alberto Soto
              viet.nguyen Viet Nguyen
              AuthorX
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved:
                Work Started: