confluentinc / kafka-streams-examples

Demo applications and code examples for Apache Kafka's Streams API.
Apache License 2.0
53 stars 1.15k forks source link

Can't load library when running AnomalyDetectionLambdaExample #443

Open asafm opened 1 year ago

asafm commented 1 year ago
  1. Run kafka using docker compose:
curl --silent --output docker-compose.yml \
  https://raw.githubusercontent.com/confluentinc/cp-all-in-one/7.3.3-post/cp-all-in-one/docker-compose.yml

then

docker-compose up -d
  1. mvn clean compile -DskipTesta

  2. Run AnomalyDetectionLambdaExample using IntelliJ on 7.1.1-post branch

Fail:

/Users/asaf/.sdkman/candidates/java/18-amzn/bin/java -javaagent:/Users/asaf/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/231.8109.175/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=51133:/Users/asaf/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/231.8109.175/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath /Users/asaf/streamnative/sandbox/kafka-streams-examples/target/classes:/Users/asaf/.m2/repository/io/confluent/kafka-streams-avro-serde/7.1.1/kafka-streams-avro-serde-7.1.1.jar:/Users/asaf/.m2/repository/org/apache/commons/commons-compress/1.21/commons-compress-1.21.jar:/Users/asaf/.m2/repository/io/confluent/kafka-avro-serializer/7.1.1/kafka-avro-serializer-7.1.1.jar:/Users/asaf/.m2/repository/io/confluent/kafka-schema-serializer/7.1.1/kafka-schema-serializer-7.1.1.jar:/Users/asaf/.m2/repository/com/google/guava/guava/30.1.1-jre/guava-30.1.1-jre.jar:/Users/asaf/.m2/repository/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/Users/asaf/.m2/repository/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/asaf/.m2/repository/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:/Users/asaf/.m2/repository/org/checkerframework/checker-qual/3.8.0/checker-qual-3.8.0.jar:/Users/asaf/.m2/repository/com/google/errorprone/error_prone_annotations/2.5.1/error_prone_annotations-2.5.1.jar:/Users/asaf/.m2/repository/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar:/Users/asaf/.m2/repository/io/confluent/kafka-schema-registry-client/7.1.1/kafka-schema-registry-client-7.1.1.jar:/Users/asaf/.m2/repository/io/swagger/core/v3/swagger-annotations/2.1.10/swagger-annotations-2.1.10.jar:/Users/asaf/.m2/repository/org/apache/kafka/kafka-clients/7.1.1-ccs/kafka-clients-7.1.1-ccs.jar:/Users/asaf/.m2/repository/com/github/luben/zstd-jni/1.5.0-4/zstd-jni-1.5.0-4.jar:/Users/asaf/.m2/repository/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar:/Users/asaf/.m2/repository/org/xerial/snappy/snappy-java/1.1.8.4/snappy-java-1.1.8.4.jar:/Users/asaf/.m2/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar:/Users/asaf/.m2/repository/org/apache/kafka/kafka-streams/7.1.1-ccs/kafka-streams-7.1.1-ccs.jar:/Users/asaf/.m2/repository/org/rocksdb/rocksdbjni/6.22.1.1/rocksdbjni-6.22.1.1.jar:/Users/asaf/.m2/repository/org/apache/kafka/kafka-streams-scala_2.13/7.1.1-ccs/kafka-streams-scala_2.13-7.1.1-ccs.jar:/Users/asaf/.m2/repository/org/scala-lang/modules/scala-collection-compat_2.13/2.4.4/scala-collection-compat_2.13-2.4.4.jar:/Users/asaf/.m2/repository/org/apache/avro/avro/1.10.1/avro-1.10.1.jar:/Users/asaf/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.12.3/jackson-core-2.12.3.jar:/Users/asaf/.m2/repository/org/apache/avro/avro-maven-plugin/1.10.1/avro-maven-plugin-1.10.1.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-core/3.3.9/maven-core-3.3.9.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-model/3.3.9/maven-model-3.3.9.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-settings/3.3.9/maven-settings-3.3.9.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-settings-builder/3.3.9/maven-settings-builder-3.3.9.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-builder-support/3.3.9/maven-builder-support-3.3.9.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-repository-metadata/3.3.9/maven-repository-metadata-3.3.9.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-artifact/3.3.9/maven-artifact-3.3.9.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-plugin-api/3.3.9/maven-plugin-api-3.3.9.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-model-builder/3.3.9/maven-model-builder-3.3.9.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-aether-provider/3.3.9/maven-aether-provider-3.3.9.jar:/Users/asaf/.m2/repository/org/eclipse/aether/aether-spi/1.0.2.v20150114/aether-spi-1.0.2.v20150114.jar:/Users/asaf/.m2/repository/org/eclipse/aether/aether-impl/1.0.2.v20150114/aether-impl-1.0.2.v20150114.jar:/Users/asaf/.m2/repository/org/eclipse/aether/aether-api/1.0.2.v20150114/aether-api-1.0.2.v20150114.jar:/Users/asaf/.m2/repository/org/eclipse/aether/aether-util/1.0.2.v20150114/aether-util-1.0.2.v20150114.jar:/Users/asaf/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.2/org.eclipse.sisu.plexus-0.3.2.jar:/Users/asaf/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar:/Users/asaf/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar:/Users/asaf/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.2/org.eclipse.sisu.inject-0.3.2.jar:/Users/asaf/.m2/repository/com/google/inject/guice/4.0/guice-4.0-no_aop.jar:/Users/asaf/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/asaf/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/asaf/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar:/Users/asaf/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar:/Users/asaf/.m2/repository/org/codehaus/plexus/plexus-classworlds/2.5.2/plexus-classworlds-2.5.2.jar:/Users/asaf/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.6/plexus-component-annotations-1.6.jar:/Users/asaf/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar:/Users/asaf/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar:/Users/asaf/.m2/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar:/Users/asaf/.m2/repository/org/apache/maven/shared/file-management/3.0.0/file-management-3.0.0.jar:/Users/asaf/.m2/repository/org/apache/maven/shared/maven-shared-io/3.0.0/maven-shared-io-3.0.0.jar:/Users/asaf/.m2/repository/org/apache/maven/maven-compat/3.0/maven-compat-3.0.jar:/Users/asaf/.m2/repository/org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.jar:/Users/asaf/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar:/Users/asaf/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar:/Users/asaf/.m2/repository/org/apache/maven/wagon/wagon-provider-api/2.10/wagon-provider-api-2.10.jar:/Users/asaf/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.0.0/maven-shared-utils-3.0.0.jar:/Users/asaf/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar:/Users/asaf/.m2/repository/org/apache/avro/avro-compiler/1.10.1/avro-compiler-1.10.1.jar:/Users/asaf/.m2/repository/org/apache/velocity/velocity-engine-core/2.2/velocity-engine-core-2.2.jar:/Users/asaf/.m2/repository/commons-cli/commons-cli/1.4/commons-cli-1.4.jar:/Users/asaf/.m2/repository/org/scala-lang/scala-library/2.13.2/scala-library-2.13.2.jar:/Users/asaf/.m2/repository/com/101tec/zkclient/0.9/zkclient-0.9.jar:/Users/asaf/.m2/repository/org/slf4j/slf4j-log4j12/1.7.30/slf4j-log4j12-1.7.30.jar:/Users/asaf/.m2/repository/io/confluent/confluent-log4j/1.2.17-cp10/confluent-log4j-1.2.17-cp10.jar:/Users/asaf/.m2/repository/io/confluent/logredactor/1.0.10/logredactor-1.0.10.jar:/Users/asaf/.m2/repository/com/google/re2j/re2j/1.6/re2j-1.6.jar:/Users/asaf/.m2/repository/io/confluent/logredactor-metrics/1.0.10/logredactor-metrics-1.0.10.jar:/Users/asaf/.m2/repository/com/eclipsesource/minimal-json/minimal-json/0.9.5/minimal-json-0.9.5.jar:/Users/asaf/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.1/javax.ws.rs-api-2.1.jar:/Users/asaf/.m2/repository/org/eclipse/jetty/jetty-server/9.4.44.v20210927/jetty-server-9.4.44.v20210927.jar:/Users/asaf/.m2/repository/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar:/Users/asaf/.m2/repository/org/eclipse/jetty/jetty-http/9.4.44.v20210927/jetty-http-9.4.44.v20210927.jar:/Users/asaf/.m2/repository/org/eclipse/jetty/jetty-util/9.4.44.v20210927/jetty-util-9.4.44.v20210927.jar:/Users/asaf/.m2/repository/org/eclipse/jetty/jetty-io/9.4.44.v20210927/jetty-io-9.4.44.v20210927.jar:/Users/asaf/.m2/repository/org/eclipse/jetty/jetty-servlet/9.4.44.v20210927/jetty-servlet-9.4.44.v20210927.jar:/Users/asaf/.m2/repository/org/eclipse/jetty/jetty-security/9.4.44.v20210927/jetty-security-9.4.44.v20210927.jar:/Users/asaf/.m2/repository/org/eclipse/jetty/jetty-util-ajax/9.4.44.v20210927/jetty-util-ajax-9.4.44.v20210927.jar:/Users/asaf/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet/2.34/jersey-container-servlet-2.34.jar:/Users/asaf/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet-core/2.34/jersey-container-servlet-core-2.34.jar:/Users/asaf/.m2/repository/org/glassfish/hk2/external/jakarta.inject/2.6.1/jakarta.inject-2.6.1.jar:/Users/asaf/.m2/repository/org/glassfish/jersey/core/jersey-common/2.34/jersey-common-2.34.jar:/Users/asaf/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/Users/asaf/.m2/repository/org/glassfish/hk2/osgi-resource-locator/1.0.3/osgi-resource-locator-1.0.3.jar:/Users/asaf/.m2/repository/org/glassfish/jersey/core/jersey-server/2.34/jersey-server-2.34.jar:/Users/asaf/.m2/repository/org/glassfish/jersey/core/jersey-client/2.34/jersey-client-2.34.jar:/Users/asaf/.m2/repository/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar:/Users/asaf/.m2/repository/jakarta/ws/rs/jakarta.ws.rs-api/2.1.6/jakarta.ws.rs-api-2.1.6.jar:/Users/asaf/.m2/repository/org/glassfish/jersey/inject/jersey-hk2/2.34/jersey-hk2-2.34.jar:/Users/asaf/.m2/repository/org/glassfish/hk2/hk2-locator/2.6.1/hk2-locator-2.6.1.jar:/Users/asaf/.m2/repository/org/glassfish/hk2/external/aopalliance-repackaged/2.6.1/aopalliance-repackaged-2.6.1.jar:/Users/asaf/.m2/repository/org/glassfish/hk2/hk2-api/2.6.1/hk2-api-2.6.1.jar:/Users/asaf/.m2/repository/org/glassfish/hk2/hk2-utils/2.6.1/hk2-utils-2.6.1.jar:/Users/asaf/.m2/repository/org/javassist/javassist/3.25.0-GA/javassist-3.25.0-GA.jar:/Users/asaf/.m2/repository/org/glassfish/jersey/media/jersey-media-json-jackson/2.34/jersey-media-json-jackson-2.34.jar:/Users/asaf/.m2/repository/org/glassfish/jersey/ext/jersey-entity-filtering/2.34/jersey-entity-filtering-2.34.jar:/Users/asaf/.m2/repository/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.12.3/jackson-module-jaxb-annotations-2.12.3.jar:/Users/asaf/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.2/jakarta.xml.bind-api-2.3.2.jar:/Users/asaf/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.1/jakarta.activation-api-1.2.1.jar:/Users/asaf/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.12.3/jackson-annotations-2.12.3.jar:/Users/asaf/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.12.3/jackson-databind-2.12.3.jar:/Users/asaf/.m2/repository/io/confluent/monitoring-interceptors/7.1.1/monitoring-interceptors-7.1.1.jar:/Users/asaf/.m2/repository/com/twitter/algebird-core_2.13/0.13.7/algebird-core_2.13-0.13.7.jar:/Users/asaf/.m2/repository/com/googlecode/javaewah/JavaEWAH/1.1.7/JavaEWAH-1.1.7.jar:/Users/asaf/.m2/repository/org/typelevel/algebra_2.13/2.0.0/algebra_2.13-2.0.0.jar:/Users/asaf/.m2/repository/org/typelevel/cats-kernel_2.13/2.0.0/cats-kernel_2.13-2.0.0.jar:/Users/asaf/.m2/repository/org/scala-lang/scala-reflect/2.13.2/scala-reflect-2.13.2.jar:/Users/asaf/.m2/repository/com/twitter/chill_2.13/0.9.5/chill_2.13-0.9.5.jar:/Users/asaf/.m2/repository/com/twitter/chill-java/0.9.5/chill-java-0.9.5.jar:/Users/asaf/.m2/repository/com/esotericsoftware/kryo-shaded/4.0.2/kryo-shaded-4.0.2.jar:/Users/asaf/.m2/repository/com/esotericsoftware/minlog/1.3.0/minlog-1.3.0.jar:/Users/asaf/.m2/repository/org/apache/xbean/xbean-asm7-shaded/4.15/xbean-asm7-shaded-4.15.jar:/Users/asaf/.m2/repository/org/objenesis/objenesis/2.5/objenesis-2.5.jar:/Users/asaf/.m2/repository/org/scalactic/scalactic_2.13/3.1.2/scalactic_2.13-3.1.2.jar:/Users/asaf/.m2/repository/io/confluent/common-utils/7.1.1/common-utils-7.1.1.jar io.confluent.examples.streams.AnomalyDetectionLambdaExample
[2023-04-30 13:00:38,036] WARN [main] Using an OS temp directory in the state.dir property can cause failures with writing the checkpoint file due to the fact that this directory can be cleared by the OS. Resolved state.dir: [/var/folders/kc/tw2ty9r11f34925hs5ff_3yh0000gn/T//kafka-streams] (org.apache.kafka.streams.processor.internals.StateDirectory)
[2023-04-30 13:00:38,278] WARN [main] stream-thread [main] Failed to delete state store directory of /var/folders/kc/tw2ty9r11f34925hs5ff_3yh0000gn/T/kafka-streams/anomaly-detection-lambda-example for it is not empty (org.apache.kafka.streams.processor.internals.StateDirectory)
[2023-04-30 13:00:39,277] ERROR [anomaly-detection-lambda-example-client-StreamThread-1] stream-client [anomaly-detection-lambda-example-client] Encountered the following exception during processing and Kafka Streams opted to SHUTDOWN_CLIENT. The streams client is going to shut down now.  (org.apache.kafka.streams.KafkaStreams)
java.lang.UnsatisfiedLinkError: Can't load library: /var/folders/kc/tw2ty9r11f34925hs5ff_3yh0000gn/T/librocksdbjni896374959469288004.jnilib
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2398)
    at java.base/java.lang.Runtime.load0(Runtime.java:785)
    at java.base/java.lang.System.load(System.java:1979)
    at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:79)
    at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:57)
    at org.rocksdb.RocksDB.loadLibrary(RocksDB.java:69)
    at org.rocksdb.RocksDB.<clinit>(RocksDB.java:38)
    at org.rocksdb.DBOptions.<clinit>(DBOptions.java:22)
    at org.apache.kafka.streams.state.internals.RocksDBStore.openDB(RocksDBStore.java:126)
    at org.apache.kafka.streams.state.internals.TimestampedSegment.openDB(TimestampedSegment.java:56)
    at org.apache.kafka.streams.state.internals.TimestampedSegments.getOrCreateSegment(TimestampedSegments.java:51)
    at org.apache.kafka.streams.state.internals.TimestampedSegments.getOrCreateSegment(TimestampedSegments.java:26)
    at org.apache.kafka.streams.state.internals.AbstractSegments.getOrCreateSegmentIfLive(AbstractSegments.java:85)
    at org.apache.kafka.streams.state.internals.AbstractRocksDBSegmentedBytesStore.put(AbstractRocksDBSegmentedBytesStore.java:214)
    at org.apache.kafka.streams.state.internals.RocksDBWindowStore.put(RocksDBWindowStore.java:47)
    at org.apache.kafka.streams.state.internals.RocksDBWindowStore.put(RocksDBWindowStore.java:25)
    at org.apache.kafka.streams.state.internals.ChangeLoggingWindowBytesStore.put(ChangeLoggingWindowBytesStore.java:135)
    at org.apache.kafka.streams.state.internals.ChangeLoggingWindowBytesStore.put(ChangeLoggingWindowBytesStore.java:36)
    at org.apache.kafka.streams.state.internals.CachingWindowStore.putAndMaybeForward(CachingWindowStore.java:117)
    at org.apache.kafka.streams.state.internals.CachingWindowStore.lambda$initInternal$0(CachingWindowStore.java:97)
    at org.apache.kafka.streams.state.internals.NamedCache.flush(NamedCache.java:151)
    at org.apache.kafka.streams.state.internals.NamedCache.flush(NamedCache.java:109)
    at org.apache.kafka.streams.state.internals.ThreadCache.flush(ThreadCache.java:136)
    at org.apache.kafka.streams.state.internals.CachingWindowStore.flushCache(CachingWindowStore.java:416)
    at org.apache.kafka.streams.state.internals.WrappedStateStore.flushCache(WrappedStateStore.java:71)
    at org.apache.kafka.streams.processor.internals.ProcessorStateManager.flushCache(ProcessorStateManager.java:491)
    at org.apache.kafka.streams.processor.internals.StreamTask.prepareCommit(StreamTask.java:402)
    at org.apache.kafka.streams.processor.internals.TaskManager.commitTasksAndMaybeUpdateCommittableOffsets(TaskManager.java:1112)
    at org.apache.kafka.streams.processor.internals.TaskManager.commit(TaskManager.java:1084)
    at org.apache.kafka.streams.processor.internals.StreamThread.maybeCommit(StreamThread.java:1071)
    at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:817)
    at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:604)
    at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:576)

Process finished with exit code 0

Any idea?

javabrett commented 1 year ago

Looks like the default branch here could use an update - it's 7.1.1-post but 7.3.3-post is newest.

Can you git checkout 7.3.3-post, do a clean build and try again? The RocksDB version on 7.1.1 is too old for Mac M1 support, per https://github.com/facebook/rocksdb/issues/7720 .

asafm commented 1 year ago

Perfect. It worked. The WARN I got from running that class were:

[2023-05-01 17:09:36,764] WARN [main] Using an OS temp directory in the state.dir property can cause failures with writing the checkpoint file due to the fact that this directory can be cleared by the OS. Resolved state.dir: [/var/folders/kc/tw2ty9r11f34925hs5ff_3yh0000gn/T//kafka-streams] (org.apache.kafka.streams.processor.internals.StateDirectory)
[2023-05-01 17:09:36,935] WARN [main] Error while loading kafka-streams-version.properties (org.apache.kafka.streams.internals.metrics.ClientMetrics)
java.lang.NullPointerException: inStream parameter is null
    at java.base/java.util.Objects.requireNonNull(Objects.java:233)
    at java.base/java.util.Properties.load(Properties.java:408)
    at org.apache.kafka.streams.internals.metrics.ClientMetrics.<clinit>(ClientMetrics.java:53)
    at org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:894)
    at org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:856)
    at org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:826)
    at org.apache.kafka.streams.KafkaStreams.<init>(KafkaStreams.java:738)
    at io.confluent.examples.streams.AnomalyDetectionLambdaExample.main(AnomalyDetectionLambdaExample.java:159)
[2023-05-01 17:09:37,003] WARN [main] stream-thread [main] Failed to delete state store directory of /var/folders/kc/tw2ty9r11f34925hs5ff_3yh0000gn/T/kafka-streams/anomaly-detection-lambda-example for it is not empty (org.apache.kafka.streams.processor.internals.StateDirectory)