This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch branch-4.17
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/branch-4.17 by this push:
new 996b5d4dda Fixed creation of temporary dir in NativeUtils (#4262)
996b5d4dda is described below
commit 996b5d4dda522f7333133bca7150b1646ef494e2
Author: Matteo Merli <[email protected]>
AuthorDate: Tue Apr 2 18:56:10 2024 -0700
Fixed creation of temporary dir in NativeUtils (#4262)
### Motivation
Creating the temp directory for unpacking the native library is failing for
the affinity library.
### Changes
Use `Files.createTempDirectory()` instead.
---
.../com/scurrilous/circe/utils/NativeUtils.java | 12 +++++-----
.../common/util/affinity/impl/NativeUtils.java | 26 ++++++++++++++--------
2 files changed, 22 insertions(+), 16 deletions(-)
diff --git
a/circe-checksum/src/main/java/com/scurrilous/circe/utils/NativeUtils.java
b/circe-checksum/src/main/java/com/scurrilous/circe/utils/NativeUtils.java
index 2932c65000..988264c952 100644
--- a/circe-checksum/src/main/java/com/scurrilous/circe/utils/NativeUtils.java
+++ b/circe-checksum/src/main/java/com/scurrilous/circe/utils/NativeUtils.java
@@ -26,6 +26,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.Locale;
/**
@@ -50,13 +52,9 @@ public class NativeUtils {
String[] parts = path.split("/");
String filename = (parts.length > 0) ? parts[parts.length - 1] : null;
- File dir = File.createTempFile("native", "");
- dir.delete();
- if (!(dir.mkdir())) {
- throw new IOException("Failed to create temp directory " +
dir.getAbsolutePath());
- }
- dir.deleteOnExit();
- File temp = new File(dir, filename);
+ Path dir = Files.createTempDirectory("native");
+ dir.toFile().deleteOnExit();
+ File temp = new File(dir.toString(), filename);
temp.deleteOnExit();
byte[] buffer = new byte[1024];
diff --git
a/cpu-affinity/src/main/java/org/apache/bookkeeper/common/util/affinity/impl/NativeUtils.java
b/cpu-affinity/src/main/java/org/apache/bookkeeper/common/util/affinity/impl/NativeUtils.java
index 2dbec828d3..fde69f9011 100644
---
a/cpu-affinity/src/main/java/org/apache/bookkeeper/common/util/affinity/impl/NativeUtils.java
+++
b/cpu-affinity/src/main/java/org/apache/bookkeeper/common/util/affinity/impl/NativeUtils.java
@@ -24,9 +24,11 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
-import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import lombok.NonNull;
import lombok.experimental.UtilityClass;
/**
@@ -46,17 +48,17 @@ public class NativeUtils {
value = "RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE",
justification = "work around for java 9:
https://github.com/spotbugs/spotbugs/issues/493")
public static void loadLibraryFromJar(String path) throws Exception {
-
com.google.common.base.Preconditions.checkArgument(path.startsWith("/"),
"absolute path must start with /");
+ checkArgument(path.startsWith("/"), "absolute path must start with /");
String[] parts = path.split("/");
- String filename = (parts.length > 0) ? parts[parts.length - 1] : null;
+ checkArgument(parts.length > 0, "absolute path must contain file
name");
- File dir = File.createTempFile("native", "");
- if (!(dir.mkdir())) {
- throw new IOException("Failed to create temp directory " +
dir.getAbsolutePath());
- }
- dir.deleteOnExit();
- File temp = new File(dir, filename);
+ String filename = parts[parts.length - 1];
+ checkArgument(path.startsWith("/"), "absolute path must start with /");
+
+ Path dir = Files.createTempDirectory("native");
+ dir.toFile().deleteOnExit();
+ File temp = new File(dir.toString(), filename);
temp.deleteOnExit();
byte[] buffer = new byte[1024];
@@ -79,4 +81,10 @@ public class NativeUtils {
System.load(temp.getAbsolutePath());
}
+
+ private static void checkArgument(boolean expression, @NonNull Object
errorMessage) {
+ if (!expression) {
+ throw new IllegalArgumentException(String.valueOf(errorMessage));
+ }
+ }
}