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;