strimzi / strimzi-lab

A lab focused on deploying streaming applications on top of Strimzi
Apache License 2.0
23 stars 78 forks source link

Build stream API app Docker image with RocksDB library #1

Closed ppatierno closed 6 years ago

ppatierno commented 6 years ago

With the current base openjdk:8-jre-alpine image for building the stream API application, the RockDB library is not available and the following exception is thrown while running the container on OpenShift :

Exception in thread "streams-temperature-f4cfb4e2-65f9-4bef-a952-8b117fa5f08a-StreamThread-1" java.lang.UnsatisfiedLinkError: /tmp/librocksdbjni783529562499980046.so: Error loading shared library libstdc++.so.6: No such file or directory (needed by /tmp/librocksdbjni783529562499980046.so)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:78)
    at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:56)
    at org.rocksdb.RocksDB.loadLibrary(RocksDB.java:64)
    at org.rocksdb.RocksDB.<clinit>(RocksDB.java:35)
    at org.rocksdb.Options.<clinit>(Options.java:25)
    at org.apache.kafka.streams.state.internals.RocksDBStore.openDB(RocksDBStore.java:128)
    at org.apache.kafka.streams.state.internals.Segment.openDB(Segment.java:40)
    at org.apache.kafka.streams.state.internals.Segments.getOrCreateSegment(Segments.java:89)
    at org.apache.kafka.streams.state.internals.RocksDBSegmentedBytesStore.put(RocksDBSegmentedBytesStore.java:81)
    at org.apache.kafka.streams.state.internals.RocksDBWindowStore$RocksDBWindowBytesStore.put(RocksDBWindowStore.java:43)
    at org.apache.kafka.streams.state.internals.RocksDBWindowStore$RocksDBWindowBytesStore.put(RocksDBWindowStore.java:34)
    at org.apache.kafka.streams.state.internals.ChangeLoggingWindowBytesStore.put(ChangeLoggingWindowBytesStore.java:67)
    at org.apache.kafka.streams.state.internals.ChangeLoggingWindowBytesStore.put(ChangeLoggingWindowBytesStore.java:33)
    at org.apache.kafka.streams.state.internals.CachingWindowStore$1.apply(CachingWindowStore.java:100)
    at org.apache.kafka.streams.state.internals.NamedCache.flush(NamedCache.java:141)
    at org.apache.kafka.streams.state.internals.NamedCache.evict(NamedCache.java:232)
    at org.apache.kafka.streams.state.internals.ThreadCache.maybeEvict(ThreadCache.java:245)
    at org.apache.kafka.streams.state.internals.ThreadCache.put(ThreadCache.java:153)
    at org.apache.kafka.streams.state.internals.CachingWindowStore.put(CachingWindowStore.java:157)
    at org.apache.kafka.streams.state.internals.CachingWindowStore.put(CachingWindowStore.java:36)
    at org.apache.kafka.streams.state.internals.MeteredWindowStore.put(MeteredWindowStore.java:96)
    at org.apache.kafka.streams.kstream.internals.KStreamWindowReduce$KStreamWindowReduceProcessor.process(KStreamWindowReduce.java:118)
    at org.apache.kafka.streams.processor.internals.ProcessorNode$1.run(ProcessorNode.java:46)
    at org.apache.kafka.streams.processor.internals.StreamsMetricsImpl.measureLatencyNs(StreamsMetricsImpl.java:208)
    at org.apache.kafka.streams.processor.internals.ProcessorNode.process(ProcessorNode.java:124)
    at org.apache.kafka.streams.processor.internals.ProcessorContextImpl.forward(ProcessorContextImpl.java:85)
    at org.apache.kafka.streams.processor.internals.SourceNode.process(SourceNode.java:80)
    at org.apache.kafka.streams.processor.internals.StreamTask.process(StreamTask.java:216)
    at org.apache.kafka.streams.processor.internals.AssignedTasks.process(AssignedTasks.java:403)
    at org.apache.kafka.streams.processor.internals.TaskManager.process(TaskManager.java:317)
    at org.apache.kafka.streams.processor.internals.StreamThread.processAndMaybeCommit(StreamThread.java:942)
    at org.apache.kafka.streams.processor.internals.StreamThread.runOnce(StreamThread.java:822)
    at org.apache.kafka.streams.processor.internals.StreamThread.runLoop(StreamThread.java:774)
    at org.apache.kafka.streams.processor.internals.StreamThread.run(StreamThread.java:744)
ppatierno commented 6 years ago

Fixed just using a Fedora based image (6db952084b86daf9982f825245b879aebbf69f50) instead of building a specific image. The RocksDB jar already contains the native library used with JNI.