diff options
Diffstat (limited to 'spark-common/src')
-rw-r--r-- | spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java | 24 | ||||
-rwxr-xr-x | spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so | bin | 328432 -> 333864 bytes | |||
-rwxr-xr-x | spark-common/src/main/resources/spark/linux/amd64-musl/libasyncProfiler.so | bin | 0 -> 304568 bytes | |||
-rwxr-xr-x | spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so | bin | 342239 -> 347712 bytes | |||
-rwxr-xr-x | spark-common/src/main/resources/spark/macos/libasyncProfiler.so | bin | 688400 -> 690128 bytes |
5 files changed, 24 insertions, 0 deletions
diff --git a/spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java b/spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java index d642a53..ef2c035 100644 --- a/spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java +++ b/spark-common/src/main/java/me/lucko/spark/common/sampler/async/AsyncProfilerAccess.java @@ -29,13 +29,16 @@ import me.lucko.spark.common.util.TemporaryFiles; import one.profiler.AsyncProfiler; import one.profiler.Events; +import java.io.BufferedReader; import java.io.InputStream; +import java.io.InputStreamReader; import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.Locale; import java.util.logging.Level; +import java.util.stream.Collectors; /** * Provides a bridge between spark and async-profiler. @@ -108,8 +111,13 @@ public enum AsyncProfilerAccess { String os = System.getProperty("os.name").toLowerCase(Locale.ROOT).replace(" ", ""); String arch = System.getProperty("os.arch").toLowerCase(Locale.ROOT); + if (os.equals("linux") && arch.equals("amd64") && isLinuxMusl()) { + arch = "amd64-musl"; + } + Table<String, String, String> supported = ImmutableTable.<String, String, String>builder() .put("linux", "amd64", "linux/amd64") + .put("linux", "amd64-musl", "linux/amd64-musl") .put("linux", "aarch64", "linux/aarch64") .put("macosx", "amd64", "macos") .put("macosx", "aarch64", "macos") @@ -190,4 +198,20 @@ public enum AsyncProfilerAccess { super("A runtime error occurred whilst loading the native library", cause); } } + + // Checks if the system is using musl instead of glibc + private static boolean isLinuxMusl() { + try { + InputStream stream = new ProcessBuilder("sh", "-c", "ldd `which ls`") + .start() + .getInputStream(); + + BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); + String output = reader.lines().collect(Collectors.joining()); + return output.contains("musl"); // shrug + } catch (Throwable e) { + // ignore + return false; + } + } } diff --git a/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so Binary files differindex 35f83b2..c3c2eb2 100755 --- a/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so +++ b/spark-common/src/main/resources/spark/linux/aarch64/libasyncProfiler.so diff --git a/spark-common/src/main/resources/spark/linux/amd64-musl/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/amd64-musl/libasyncProfiler.so Binary files differnew file mode 100755 index 0000000..4c69ab8 --- /dev/null +++ b/spark-common/src/main/resources/spark/linux/amd64-musl/libasyncProfiler.so diff --git a/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so b/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so Binary files differindex edbf103..5612ad9 100755 --- a/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so +++ b/spark-common/src/main/resources/spark/linux/amd64/libasyncProfiler.so diff --git a/spark-common/src/main/resources/spark/macos/libasyncProfiler.so b/spark-common/src/main/resources/spark/macos/libasyncProfiler.so Binary files differindex ab818e9..1fc6ba3 100755 --- a/spark-common/src/main/resources/spark/macos/libasyncProfiler.so +++ b/spark-common/src/main/resources/spark/macos/libasyncProfiler.so |