[MGNLRANK-21] User-based search result ranking break the search for external users Created: 21/Sep/23  Updated: 10/Oct/23  Resolved: 25/Sep/23

Status: Closed
Project: Ranker
Component/s: None
Affects Version/s: 1.0.0
Fix Version/s: 1.0.1

Type: Bug Priority: Neutral
Reporter: Viet Nguyen Assignee: Alberto Soto
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
causality
documentation
to be documented by DOCU-2844 DOC: Known issues 6.2.39 Resolved
relation
Template:
Acceptance criteria:
Empty
Testcase included:
Yes
Release notes required:
Yes
Documentation update required:
Yes
Date of First Response:
Epic Link: AuthorX Support
Team: AuthorX
Work Started:
Approved:
Yes

 Description   

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.

Generated at Mon Feb 12 10:39:30 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.