From 4525ac5b676be5ca5af7853a696f51f36e4f39df Mon Sep 17 00:00:00 2001 From: stczwd Date: Fri, 13 May 2022 17:40:49 +0800 Subject: [PATCH 1/2] fix: can not init class after JniLoader.get().ensureLoaded() accepted failed --- java/c/src/main/java/org/apache/arrow/c/jni/JniWrapper.java | 2 +- .../main/java/org/apache/arrow/dataset/file/JniWrapper.java | 2 +- .../main/java/org/apache/arrow/dataset/jni/JniWrapper.java | 2 +- .../java/org/apache/arrow/dataset/jni/NativeMemoryPool.java | 4 +++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/java/c/src/main/java/org/apache/arrow/c/jni/JniWrapper.java b/java/c/src/main/java/org/apache/arrow/c/jni/JniWrapper.java index 04a143a7a99..9e1c19b100e 100644 --- a/java/c/src/main/java/org/apache/arrow/c/jni/JniWrapper.java +++ b/java/c/src/main/java/org/apache/arrow/c/jni/JniWrapper.java @@ -24,6 +24,7 @@ public class JniWrapper { private static final JniWrapper INSTANCE = new JniWrapper(); public static JniWrapper get() { + JniLoader.get().ensureLoaded(); return INSTANCE; } @@ -34,7 +35,6 @@ private JniWrapper() { throw new UnsupportedOperationException( "The Java C Data Interface implementation is currently only supported on 64-bit systems"); } - JniLoader.get().ensureLoaded(); } public native void releaseSchema(long memoryAddress); diff --git a/java/dataset/src/main/java/org/apache/arrow/dataset/file/JniWrapper.java b/java/dataset/src/main/java/org/apache/arrow/dataset/file/JniWrapper.java index f69d8205192..6e65803a333 100644 --- a/java/dataset/src/main/java/org/apache/arrow/dataset/file/JniWrapper.java +++ b/java/dataset/src/main/java/org/apache/arrow/dataset/file/JniWrapper.java @@ -27,11 +27,11 @@ public class JniWrapper { private static final JniWrapper INSTANCE = new JniWrapper(); public static JniWrapper get() { + JniLoader.get().ensureLoaded(); return INSTANCE; } private JniWrapper() { - JniLoader.get().ensureLoaded(); } /** diff --git a/java/dataset/src/main/java/org/apache/arrow/dataset/jni/JniWrapper.java b/java/dataset/src/main/java/org/apache/arrow/dataset/jni/JniWrapper.java index 7dd54e7648f..9bd0ec7df8c 100644 --- a/java/dataset/src/main/java/org/apache/arrow/dataset/jni/JniWrapper.java +++ b/java/dataset/src/main/java/org/apache/arrow/dataset/jni/JniWrapper.java @@ -25,11 +25,11 @@ public class JniWrapper { private static final JniWrapper INSTANCE = new JniWrapper(); public static JniWrapper get() { + JniLoader.get().ensureLoaded(); return INSTANCE; } private JniWrapper() { - JniLoader.get().ensureLoaded(); } /** diff --git a/java/dataset/src/main/java/org/apache/arrow/dataset/jni/NativeMemoryPool.java b/java/dataset/src/main/java/org/apache/arrow/dataset/jni/NativeMemoryPool.java index 83825776b76..fca5efb0a28 100644 --- a/java/dataset/src/main/java/org/apache/arrow/dataset/jni/NativeMemoryPool.java +++ b/java/dataset/src/main/java/org/apache/arrow/dataset/jni/NativeMemoryPool.java @@ -23,7 +23,7 @@ public class NativeMemoryPool implements AutoCloseable { private final long nativeInstanceId; - static { + private static void ensureLoaded() { JniLoader.get().ensureLoaded(); } @@ -35,6 +35,7 @@ private NativeMemoryPool(long nativeInstanceId) { * Get the default memory pool. This will return arrow::default_memory_pool() directly. */ public static NativeMemoryPool getDefault() { + ensureLoaded(); return new NativeMemoryPool(getDefaultMemoryPool()); } @@ -44,6 +45,7 @@ public static NativeMemoryPool getDefault() { * from the listener in advance. */ public static NativeMemoryPool createListenable(ReservationListener listener) { + ensureLoaded(); return new NativeMemoryPool(createListenableMemoryPool(listener)); } From 7e5354e59f9ff1b0ef80bddbb9d72a92e070adf2 Mon Sep 17 00:00:00 2001 From: jackylee-ch Date: Tue, 7 Jun 2022 21:35:52 +0800 Subject: [PATCH 2/2] change code to inline --- .../org/apache/arrow/dataset/jni/NativeMemoryPool.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/java/dataset/src/main/java/org/apache/arrow/dataset/jni/NativeMemoryPool.java b/java/dataset/src/main/java/org/apache/arrow/dataset/jni/NativeMemoryPool.java index fca5efb0a28..e20e1e351c5 100644 --- a/java/dataset/src/main/java/org/apache/arrow/dataset/jni/NativeMemoryPool.java +++ b/java/dataset/src/main/java/org/apache/arrow/dataset/jni/NativeMemoryPool.java @@ -23,10 +23,6 @@ public class NativeMemoryPool implements AutoCloseable { private final long nativeInstanceId; - private static void ensureLoaded() { - JniLoader.get().ensureLoaded(); - } - private NativeMemoryPool(long nativeInstanceId) { this.nativeInstanceId = nativeInstanceId; } @@ -35,7 +31,7 @@ private NativeMemoryPool(long nativeInstanceId) { * Get the default memory pool. This will return arrow::default_memory_pool() directly. */ public static NativeMemoryPool getDefault() { - ensureLoaded(); + JniLoader.get().ensureLoaded(); return new NativeMemoryPool(getDefaultMemoryPool()); } @@ -45,7 +41,7 @@ public static NativeMemoryPool getDefault() { * from the listener in advance. */ public static NativeMemoryPool createListenable(ReservationListener listener) { - ensureLoaded(); + JniLoader.get().ensureLoaded(); return new NativeMemoryPool(createListenableMemoryPool(listener)); }