This is an automated email from the ASF dual-hosted git repository.

lidavidm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new 9431d5e7bc ARROW-17113: [Java] Fail loudly in static initializer 
blocks (#13678)
9431d5e7bc is described below

commit 9431d5e7bc72915146696544756cb12ce8a179d2
Author: David Li <[email protected]>
AuthorDate: Tue Aug 9 07:44:02 2022 -0400

    ARROW-17113: [Java] Fail loudly in static initializer blocks (#13678)
    
    - MemoryUtil will print a stack trace to the console on failure (since 
Arrow won't really work without it)
    - Flight utility classes will print a stack trace but won't prevent class 
initialization (it will just fall back to the "slow" path)
    
    Authored-by: David Li <[email protected]>
    Signed-off-by: David Li <[email protected]>
---
 .../java/org/apache/arrow/flight/grpc/AddWritableBuffer.java     | 2 +-
 .../java/org/apache/arrow/flight/grpc/GetReadableBuffer.java     | 2 +-
 .../src/main/java/org/apache/arrow/memory/util/MemoryUtil.java   | 6 +++++-
 .../src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java  | 9 ---------
 4 files changed, 7 insertions(+), 12 deletions(-)

diff --git 
a/java/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/AddWritableBuffer.java
 
b/java/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/AddWritableBuffer.java
index 26e0274fa0..4a99ab2284 100644
--- 
a/java/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/AddWritableBuffer.java
+++ 
b/java/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/AddWritableBuffer.java
@@ -72,7 +72,7 @@ public class AddWritableBuffer {
       tmpBufChainOut = tmpBufChainOut2;
 
     } catch (Exception ex) {
-      ex.printStackTrace();
+      new RuntimeException("Failed to initialize AddWritableBuffer, falling 
back to slow path", ex).printStackTrace();
     }
 
     bufConstruct = tmpConstruct;
diff --git 
a/java/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/GetReadableBuffer.java
 
b/java/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/GetReadableBuffer.java
index 5f8a71576c..82cfd7f39c 100644
--- 
a/java/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/GetReadableBuffer.java
+++ 
b/java/flight/flight-core/src/main/java/org/apache/arrow/flight/grpc/GetReadableBuffer.java
@@ -51,7 +51,7 @@ public class GetReadableBuffer {
       tmpField = f;
       tmpClazz = clazz;
     } catch (Exception e) {
-      e.printStackTrace();
+      new RuntimeException("Failed to initialize GetReadableBuffer, falling 
back to slow path", e).printStackTrace();
     }
     READABLE_BUFFER = tmpField;
     BUFFER_INPUT_STREAM = tmpClazz;
diff --git 
a/java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/MemoryUtil.java
 
b/java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/MemoryUtil.java
index 16ef39702c..c48ee66c2c 100644
--- 
a/java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/MemoryUtil.java
+++ 
b/java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/MemoryUtil.java
@@ -133,7 +133,11 @@ public class MemoryUtil {
       }
       DIRECT_BUFFER_CONSTRUCTOR = directBufferConstructor;
     } catch (Throwable e) {
-      throw new RuntimeException("Failed to initialize MemoryUtil.", e);
+      // This exception will get swallowed, but it's necessary for the static 
analysis that ensures
+      // the static fields above get initialized
+      final RuntimeException failure = new RuntimeException("Failed to 
initialize MemoryUtil", e);
+      failure.printStackTrace();
+      throw failure;
     }
   }
 
diff --git 
a/java/memory/memory-netty/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java
 
b/java/memory/memory-netty/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java
index e900b1ca7a..e51c6c3d48 100644
--- 
a/java/memory/memory-netty/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java
+++ 
b/java/memory/memory-netty/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java
@@ -31,16 +31,7 @@ import io.netty.util.internal.PlatformDependent;
  * Netty classes and underlying Netty memory management.
  */
 public class UnsafeDirectLittleEndian extends WrappedByteBuf {
-
-  public static final boolean ASSERT_ENABLED;
   private static final AtomicLong ID_GENERATOR = new AtomicLong(0);
-
-  static {
-    boolean isAssertEnabled = false;
-    assert isAssertEnabled = true;
-    ASSERT_ENABLED = isAssertEnabled;
-  }
-
   public final long id = ID_GENERATOR.incrementAndGet();
   private final AbstractByteBuf wrapped;
   private final long memoryAddress;

Reply via email to