[
https://issues.apache.org/jira/browse/OAK-10957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17867364#comment-17867364
]
Wim Symons commented on OAK-10957:
----------------------------------
I searched a bit further for the root cause.
In the oak-run shaded jar assembly xml we find this exclude:
{code:java}
<exclude>org.apache.tika:tika-parsers:*</exclude>
{code}
When I compare [^oak-run-1.22.13.txt] with [^oak-run-1.22.14.txt] with {{mvn
dependency:tree}} I see these differences for {{commons-logging}} (the missing
jar):
In 1.22.13 {{commons-logging}} is a dependency of
{{{}org.apache.httpcomponents:httpclient-osgi{}}}, which is not excluded:
{code:java}
[INFO] +- org.apache.httpcomponents:httpclient-osgi:jar:4.5.12:compile
[INFO] | +- org.apache.httpcomponents:httpclient-cache:jar:4.5.12:compile
[INFO] | | \- commons-logging:commons-logging:jar:1.2:compile
{code}
In 1.22.14 {{commons-logging}} is a dependency of
{{{}org.apache.tika:tika-parsers{}}}, which is excluded from the oak-run shaded
jar:
{code:java}
[INFO] +- org.apache.tika:tika-parsers:jar:1.26:compile
[INFO] | +- org.apache.pdfbox:xmpbox:jar:2.0.23:compile
[INFO] | | \- commons-logging:commons-logging:jar:1.2:compile{code}
Why {{commons-logging}} is not a dependency of
{{org.apache.httpcomponents:httpclient-osgi:4.5.12}} anymore in 1.22.14 remains
unclear, as this is the same version as in oak-run 1.22.13 and I could not find
any explicit {{<exclude>}} of the {{commons-logging}} depency in the pom files.
Maybe the ordering of dependencies changed between these 2 releases
(tika-parses before httpclient-osgi) ?
I think you should explicitly list commons-logging as a direct dependency of
oak-run (as commons-logging is an optional dependency of the aws-java-sdk) to
avoid this issue in the future.
> oak-run datastorecheck broken for AWS since 1.22.14
> ---------------------------------------------------
>
> Key: OAK-10957
> URL: https://issues.apache.org/jira/browse/OAK-10957
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: oak-run
> Affects Versions: 1.22.14, 1.22.20, 1.66.0
> Reporter: Wim Symons
> Priority: Major
> Attachments: oak-run-1.22.13.txt, oak-run-1.22.14.txt
>
>
> {{datastorecheck}} fails as of 1.22.14 (1.22.13 was last working version).
> Example command line:
> {code:java}
> java -jar oak-run-1.22.20.jar datastorecheck --consistency --store
> aem/crx-quickstart/repository/segmentstore --repoHome
> aem/crx-quickstart/repository --s3ds
> aem/crx-quickstart/install/crx3/org.apache.jackrabbit.oak.plugins.blob.datastore.SharedS3DataStore.config{code}
> Example output from 1.22.13:
> {code:java}
> Apache Jackrabbit Oak 1.22.13
> WARNING: An illegal reflective access operation has occurred
> WARNING: Illegal reflective access by
> org.codehaus.groovy.reflection.CachedClass
> (file:/data/apps/aem/tools/oak-run-1.22.13.jar) to method
> java.lang.Object.finalize()
> WARNING: Please consider reporting this to the maintainers of
> org.codehaus.groovy.reflection.CachedClass
> WARNING: Use --illegal-access=warn to enable warnings of further illegal
> reflective access operations
> WARNING: All illegal access operations will be denied in a future release
> Starting dump of blob ids
> 1259030 blob ids found
> Finished in 1753 seconds
> Starting dump of blob references
> 3163 blob references found
> Finished in 0 seconds
> Starting consistency check
> Consistency check found 0 missing blobs
> Finished in 0 seconds
> {code}
> As of version 1.22.14, this becomes:
> {code:java}
> Apache Jackrabbit Oak 1.22.14
> java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
> at
> com.amazonaws.AmazonWebServiceClient.<clinit>(AmazonWebServiceClient.java:80)
> at
> org.apache.jackrabbit.oak.blob.cloud.s3.Utils.openService(Utils.java:96)
> at
> org.apache.jackrabbit.oak.blob.cloud.s3.S3Backend.init(S3Backend.java:168)
> at
> org.apache.jackrabbit.oak.plugins.blob.AbstractSharedCachingDataStore.init(AbstractSharedCachingDataStore.java:161)
> at
> org.apache.jackrabbit.oak.run.Utils.bootstrapDataStore(Utils.java:270)
> at
> org.apache.jackrabbit.oak.run.DataStoreCheckCommand.checkDataStore(DataStoreCheckCommand.java:201)
> at
> org.apache.jackrabbit.oak.run.DataStoreCheckCommand.execute(DataStoreCheckCommand.java:110)
> at org.apache.jackrabbit.oak.run.Main.main(Main.java:49)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.commons.logging.LogFactory
> at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
> at
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
> ... 8 more
> {code}
> And that is the same up to version 1.66.0 (latest release):
> {code:java}
> Apache Jackrabbit Oak 1.66.0
> java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
> at
> com.amazonaws.AmazonWebServiceClient.<clinit>(AmazonWebServiceClient.java:82)
> at
> org.apache.jackrabbit.oak.blob.cloud.s3.Utils.openService(Utils.java:96)
> at
> org.apache.jackrabbit.oak.blob.cloud.s3.S3Backend.init(S3Backend.java:170)
> at
> org.apache.jackrabbit.oak.plugins.blob.AbstractSharedCachingDataStore.init(AbstractSharedCachingDataStore.java:162)
> at
> org.apache.jackrabbit.oak.run.Utils.bootstrapDataStore(Utils.java:304)
> at
> org.apache.jackrabbit.oak.run.DataStoreCheckCommand.checkDataStore(DataStoreCheckCommand.java:211)
> at
> org.apache.jackrabbit.oak.run.DataStoreCheckCommand.execute(DataStoreCheckCommand.java:114)
> at org.apache.jackrabbit.oak.run.Main.main(Main.java:49)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.commons.logging.LogFactory
> at
> java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
> at
> java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
> at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
> ... 8 more {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)