[EXTDAM-236] Cloud: Error in ExternalDamSearchResultSupplier when magnolia-dam-jcr is excluded Created: 24/Feb/21  Updated: 17/Mar/21  Resolved: 17/Mar/21

Status: Closed
Project: External DAMs
Component/s: core
Affects Version/s: 1.0.5
Fix Version/s: 1.2.0

Type: Improvement Priority: Neutral
Reporter: Jesus Alonso Assignee: Jesus Alonso
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Template:
Acceptance criteria:
Empty
Task DoD:
[X]* Doc/release notes changes? Comment present?
[X]* Downstream builds green?
[X]* Solution information and context easily available?
[X]* Tests
[X]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Epic Link: Imaging and External DAM
Sprint: Cloud Service 2, Cloud Service 3
Story Points: 2

 Description   

When the magnolia-dam-jcr module is not included in the webapp, there is an exception using ExternalDamSearchResultSupplier (a.k.a. using periscope)

java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: info/magnolia/dam/jcr/JcrAssetProviderjava.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: info/magnolia/dam/jcr/JcrAssetProvider at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273) ~[?:1.8.0_231] at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280) ~[?:1.8.0_231] at java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1592) ~[?:1.8.0_231] at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java) ~[?:1.8.0_231] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_231] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_231] at java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:652) ~[?:1.8.0_231] at java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:649) ~[?:1.8.0_231] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_231] at java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:649) ~[?:1.8.0_231] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_231]Caused by: java.lang.NoClassDefFoundError: info/magnolia/dam/jcr/JcrAssetProvider at info.magnolia.external.dam.search.categories.ExternalDamSearchResultSupplier.lambda$search$1(ExternalDamSearchResultSupplier.java:66) ~[magnolia-external-dam-1.0.5-cloud-SNAPSHOT.jar:?] at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) ~[?:1.8.0_231] at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1359) ~[?:1.8.0_231] at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126) ~[?:1.8.0_231] at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499) ~[?:1.8.0_231] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486) ~[?:1.8.0_231] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472) ~[?:1.8.0_231] at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_231] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_231] at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[?:1.8.0_231] at info.magnolia.periscope.Periscope.fetchSupplierAwareSearchResults(Periscope.java:137) ~[magnolia-periscope-core-1.2.3.jar:?] at info.magnolia.periscope.Periscope.lambda$null$0(Periscope.java:123) ~[magnolia-periscope-core-1.2.3.jar:?] at info.magnolia.context.AsynchronousContext$OperationFactory.lambda$wrap$0(AsynchronousContext.java:122) ~[magnolia-core-6.3-cloud-SNAPSHOT.jar:?] at info.magnolia.periscope.Periscope.lambda$search$1(Periscope.java:123) ~[magnolia-periscope-core-1.2.3.jar:?] 

The reason is ExternalDamSearchResultSupplier has this code

@Override
public Stream<SearchResult> search(SearchQuery query) throws SearchException {
    return Lists.newArrayList(registry.getAllProviders()).stream()
            .flatMap(provider -> {
                if (provider instanceof JcrAssetProvider) {
                    return null;
                } 

AC:

  • There is no error when magnolia-dam-jcr is excluded from the webapp
  • There is no error when magnolia-dam-jcr is in the webapp

Generated at Mon Feb 12 01:53:13 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.