bookkeeper icon indicating copy to clipboard operation
bookkeeper copied to clipboard

4.16.2 enable direct io on x86 fail to start up

Open lifepuzzlefun opened this issue 2 years ago • 1 comments

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) ~[?:?]

lifepuzzlefun avatar Aug 07 '23 08:08 lifepuzzlefun

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.

lifepuzzlefun avatar Aug 12 '23 08:08 lifepuzzlefun