Skip to content

[BUG] OpenSearch installation failure during discovery-ec2 plugin load #5862

@dreamer-89

Description

@dreamer-89

Describe the bug
The OpenSearch installation fails while loading discovery ec2 plugin. This failure is observed while deploying OpenSearch 3.0.0 min-distribution using opensearch cdk. CDK uses https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/3.0.0/latest/linux/x64/tar/builds/opensearch/core-plugins/discovery-ec2-3.0.0.zip to install the plugin. I suspect this is happening because of jar conflict where jackson-databind is resolved to older version coming from discovery-ec2 plugin which doesn't contain ObjectMapper class.

To Reproduce
Steps to reproduce the behavior:

  1. Create min distribution of OpenSearch 3.0.0
  2. Synthesize and deploy OpenSearch 3.0.0 min-distribution following steps
  3. Post cdk deploy, the cluster is not reachable. The opensearch process does not start because of failure during installation.

Failure stack trace

2023-01-14T02:44:56,831][INFO ][o.o.n.Node               ] [seed] JVM arguments [-Xshare:auto, -Dopensearch.networkaddress.cache.ttl=60, -Dopensearch.networkaddress.cache.negative.ttl=10, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -XX:+ShowCodeDetailsInExceptionMessages, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true,-Dio.netty.recycler.maxCapacityPerThread=0, -Dio.netty.allocator.numDirectArenas=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.security.manager=allow, -Djava.locale.providers=SPI,COMPAT, -Xms1g, -Xmx1g, -XX:+UseG1GC, -XX:G1ReservePercent=25, -XX:InitiatingHeapOccupancyPercent=30, -Djava.io.tmpdir=/tmp/opensearch-15050265254909020855, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Djava.security.manager=allow, -XX:MaxDirectMemorySize=536870912, -Dopensearch.path.home=/home/ec2-user/opensearch, -Dopensearch.path.conf=/home/ec2-user/opensearch/config, -Dopensearch.distribution.type=tar, -Dopensearch.bundled_jdk=true]
[2023-01-14T02:44:57,638][ERROR][o.o.b.OpenSearchUncaughtExceptionHandler] [seed] fatal error in thread [main], exiting
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
        at com.amazonaws.util.json.Jackson.<clinit>(Jackson.java:40) ~[?:?]
        at org.opensearch.discovery.ec2.Ec2DiscoveryPlugin.lambda$static$0(Ec2DiscoveryPlugin.java:79) ~[?:?]
        at java.security.AccessController.doPrivileged(AccessController.java:318) ~[?:?]
        at org.opensearch.discovery.ec2.Ec2DiscoveryPlugin.<clinit>(Ec2DiscoveryPlugin.java:76) ~[?:?]
        at jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method) ~[?:?]
        at jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160) ~[?:?]
        at jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300) ~[?:?]
        at jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:103) ~[?:?]
        at jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:201) ~[?:?]
        at java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:547) ~[?:?]
        at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:497) ~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:484) ~[?:?]
        at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:784) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.plugins.PluginsService.loadBundle(PluginsService.java:731) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.plugins.PluginsService.loadBundles(PluginsService.java:533) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.plugins.PluginsService.<init>(PluginsService.java:195) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.node.Node.<init>(Node.java:427) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.node.Node.<init>(Node.java:354) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:242) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:242) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:404) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:180) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.bootstrap.OpenSearch.execute(OpenSearch.java:171) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:104) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138) ~[opensearch-cli-3.0.0.jar:3.0.0]
        at org.opensearch.cli.Command.main(Command.java:101) ~[opensearch-cli-3.0.0.jar:3.0.0]
        at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:137) ~[opensearch-3.0.0.jar:3.0.0]
        at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:103) ~[opensearch-3.0.0.jar:3.0.0]
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
        at java.net.URLClassLoader.findClass(URLClassLoader.java:445) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:588) ~[?:?]
        at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:872) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
        ... 28 more
fatal error in thread [main], exiting
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
        at com.amazonaws.util.json.Jackson.<clinit>(Jackson.java:40)
        at org.opensearch.discovery.ec2.Ec2DiscoveryPlugin.lambda$static$0(Ec2DiscoveryPlugin.java:79)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at org.opensearch.discovery.ec2.Ec2DiscoveryPlugin.<clinit>(Ec2DiscoveryPlugin.java:76)
        at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method)
        at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1160)
        at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.ensureClassInitialized(MethodHandleAccessorFactory.java:300)
        at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newConstructorAccessor(MethodHandleAccessorFactory.java:103)
        at java.base/jdk.internal.reflect.ReflectionFactory.newConstructorAccessor(ReflectionFactory.java:201)
        at java.base/java.lang.reflect.Constructor.acquireConstructorAccessor(Constructor.java:547)
        at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:497)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484)
        at org.opensearch.plugins.PluginsService.loadPlugin(PluginsService.java:784)
        at org.opensearch.plugins.PluginsService.loadBundle(PluginsService.java:731)
        at org.opensearch.plugins.PluginsService.loadBundles(PluginsService.java:533)
        at org.opensearch.plugins.PluginsService.<init>(PluginsService.java:195)
        at org.opensearch.node.Node.<init>(Node.java:427)
        at org.opensearch.node.Node.<init>(Node.java:354)
        at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:242)
        at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:242)
        at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:404)
        at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:180)
        at org.opensearch.bootstrap.OpenSearch.execute(OpenSearch.java:171)
        at org.opensearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:104)
        at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138)
        at org.opensearch.cli.Command.main(Command.java:101)
        at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:137)
        at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:103)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
        at java.base/java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:872)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
        ... 28 more

Expected behavior
The plugin load should not fail

Plugins
discovery-ec2

Host/Environment (please complete the following information):

  • OS: linux
  • Version 3.0.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    ClientsClients within the Core repository such as High level Rest client and low level clientbugSomething isn't workinguntriaged

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions