bookkeeper
bookkeeper copied to clipboard
4.16.2 enable direct io on x86 fail to start up
file libnative-io.so
libnative-io.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=e2e135126a32702ae521bbc392aaefdc665a8af0, not stripped
you can see the 4.16.2 so is arm distributed.
when you start bookie the exception throws
2023-08-07T16:03:55,249+0800 [BookieShutdownTrigger] ERROR org.apache.bookkeeper.bookie.BookieThread - Uncaught exception in thread BookieShutdownTrigger
java.lang.NoClassDefFoundError: Could not initialize class org.apache.bookkeeper.common.util.nativeio.NativeIOJni
at org.apache.bookkeeper.common.util.nativeio.NativeIOImpl.open(NativeIOImpl.java:29) ~[org.apache.bookkeeper-native-io-4.16.2.jar:?]
at org.apache.bookkeeper.bookie.storage.directentrylogger.DirectWriter.<init>(DirectWriter.java:69) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger.newDirectWriter(DirectEntryLogger.java:450) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger.addEntry(DirectEntryLogger.java:189) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.lambda$checkpoint$8(SingleDirectoryDbLedgerStorage.java:810) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.WriteCache.forEach(WriteCache.java:273) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.checkpoint(SingleDirectoryDbLedgerStorage.java:809) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.flush(SingleDirectoryDbLedgerStorage.java:899) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.shutdown(SingleDirectoryDbLedgerStorage.java:336) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.DbLedgerStorage.shutdown(DbLedgerStorage.java:307) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.BookieImpl.shutdown(BookieImpl.java:873) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.BookieImpl$7.run(BookieImpl.java:833) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.UnsatisfiedLinkError: /tmp/native138667574660649515/libnative-io.so: /tmp/native138667574660649515/libnative-io.so: cannot open shared object file: No such file or directory (Possible cause: can't load AARCH64 .so on a AMD 64 platform) [in thread "db-storage-6-1"]
at jdk.internal.loader.NativeLibraries.load(Native Method) ~[?:?]
at jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388) ~[?:?]
at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232) ~[?:?]
at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174) ~[?:?]
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389) ~[?:?]
at java.lang.Runtime.load0(Runtime.java:755) ~[?:?]
at java.lang.System.load(System.java:1953) ~[?:?]
at org.apache.bookkeeper.common.util.nativeio.NativeUtils.loadLibraryFromJar(NativeUtils.java:78) ~[org.apache.bookkeeper-native-io-4.16.2.jar:?]
at org.apache.bookkeeper.common.util.nativeio.NativeIOJni.<clinit>(NativeIOJni.java:56) ~[org.apache.bookkeeper-native-io-4.16.2.jar:?]
at org.apache.bookkeeper.common.util.nativeio.NativeIOImpl.open(NativeIOImpl.java:29) ~[org.apache.bookkeeper-native-io-4.16.2.jar:?]
at org.apache.bookkeeper.bookie.storage.directentrylogger.DirectWriter.<init>(DirectWriter.java:69) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger.newDirectWriter(DirectEntryLogger.java:450) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.directentrylogger.DirectEntryLogger.addEntry(DirectEntryLogger.java:189) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.lambda$checkpoint$8(SingleDirectoryDbLedgerStorage.java:810) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.WriteCache.forEach(WriteCache.java:273) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.checkpoint(SingleDirectoryDbLedgerStorage.java:809) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.flush(SingleDirectoryDbLedgerStorage.java:899) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at org.apache.bookkeeper.bookie.storage.ldb.SingleDirectoryDbLedgerStorage.lambda$triggerFlushAndAddEntry$7(SingleDirectoryDbLedgerStorage.java:520) ~[org.apache.bookkeeper-bookkeeper-server-4.16.2.jar:4.16.2]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[io.netty-netty-common-4.1.86.Final.jar:4.1.86.Final]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
more on this. hope help other people solve this problem.
build on linux and check the so file
~/git/bookkeeper/bookkeeper-dist/server/target/bookkeeper-server-4.17.0-SNAPSHOT/lib/lib$ file libnative-io.so
libnative-io.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=1893d115509fc5ad9535537bf114cae13a5183d0, not stripped
build on mac x86 chip.
file libnative-io.jnilib
libnative-io.jnilib: Mach-O 64-bit bundle x86_64
but seems build on x86 mac chip still can't run on x86 linux.