Why am I getting java.lang.NoClassDefFoundError after upgrading Kafka streams version?

157 Views Asked by At

I have a set of applications that are similar in their structures (all created from a template repository with a uniform structure for a Kafka streams application). I've upgraded the version of the Kafka streams package from 3.4.0 to 3.6.1 on all of those applications. When I ran them, only two (out of 8) of them failed with the following stack trace:

java.lang.NoClassDefFoundError: Could not initialize class org.rocksdb.DBOptions
    at org.apache.kafka.streams.state.internals.RocksDBStore.openDB(RocksDBStore.java:190)
    at org.apache.kafka.streams.state.internals.RocksDBStore.init(RocksDBStore.java:166)
    at org.apache.kafka.streams.state.internals.WrappedStateStore.init(WrappedStateStore.java:71)
    at org.apache.kafka.streams.state.internals.ChangeLoggingKeyValueBytesStore.init(ChangeLoggingKeyValueBytesStore.java:56)
    at org.apache.kafka.streams.state.internals.WrappedStateStore.init(WrappedStateStore.java:71)
    at org.apache.kafka.streams.state.internals.CachingKeyValueStore.init(CachingKeyValueStore.java:113)
    at org.apache.kafka.streams.state.internals.WrappedStateStore.init(WrappedStateStore.java:71)
    at org.apache.kafka.streams.state.internals.MeteredKeyValueStore.lambda$init$3(MeteredKeyValueStore.java:150)
    at org.apache.kafka.streams.processor.internals.metrics.StreamsMetricsImpl.maybeMeasureLatency(StreamsMetricsImpl.java:867)
    at org.apache.kafka.streams.state.internals.MeteredKeyValueStore.init(MeteredKeyValueStore.java:150)
    at org.apache.kafka.streams.processor.internals.ProcessorStateManager.registerStateStores(ProcessorStateManager.java:219)
    at org.apache.kafka.streams.processor.internals.StateManagerUtil.registerStateStores(StateManagerUtil.java:102)
    at org.apache.kafka.streams.processor.internals.StreamTask.initializeIfNeeded(StreamTask.java:242)
    at org.apache.kafka.streams.processor.internals.TaskManager.tryToCompleteRestoration(TaskManager.java:701)
    at org.apache.kafka.streams.processor.internals.StreamThread.initializeAndRestorePhase(StreamThread.java:901)
    at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:778)
    at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:617)
    at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:579)

All applications use RocksDB the same way, so not only that I don't understand why the org.rocksdb.DBOptions class is not found, I also don't understand why it happens only in two of the applications.

What could it be? How can I further investigate this?

0

There are 0 best solutions below