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

hongze pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new ef5f01cba [GLUTEN-6148][CORE] Simplify JniLibLoader loading mechanism 
for native libraries (#6791)
ef5f01cba is described below

commit ef5f01cba5c6c7ddf57734ca685a458174fc9064
Author: Arnav Balyan <[email protected]>
AuthorDate: Wed Aug 14 06:15:49 2024 +0530

    [GLUTEN-6148][CORE] Simplify JniLibLoader loading mechanism for native 
libraries (#6791)
    
    Closes #6148
---
 .../gluten/utils/SharedLibraryLoaderCentos7.scala  |  42 +--
 .../gluten/utils/SharedLibraryLoaderCentos8.scala  |  50 ++--
 .../gluten/utils/SharedLibraryLoaderCentos9.scala  |  50 ++--
 .../gluten/utils/SharedLibraryLoaderDebian11.scala |  53 ++--
 .../gluten/utils/SharedLibraryLoaderDebian12.scala |  65 +++--
 .../utils/SharedLibraryLoaderUbuntu2004.scala      |  85 +++---
 .../utils/SharedLibraryLoaderUbuntu2204.scala      |  55 ++--
 .../org/apache/gluten/vectorized/JniLibLoader.java | 300 +++++++--------------
 8 files changed, 294 insertions(+), 406 deletions(-)

diff --git 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos7.scala
 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos7.scala
index 47ed2c47c..a7750dcb3 100755
--- 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos7.scala
+++ 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos7.scala
@@ -20,26 +20,26 @@ import org.apache.gluten.vectorized.JniLibLoader
 
 class SharedLibraryLoaderCentos7 extends SharedLibraryLoader {
   override def loadLib(loader: JniLibLoader): Unit = {
-    loader
-      .newTransaction()
-      .loadAndCreateLink("libboost_atomic.so.1.84.0", "libboost_atomic.so", 
false)
-      .loadAndCreateLink("libboost_thread.so.1.84.0", "libboost_thread.so", 
false)
-      .loadAndCreateLink("libboost_system.so.1.84.0", "libboost_system.so", 
false)
-      .loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
-      .loadAndCreateLink("libboost_program_options.so.1.84.0", 
"libboost_program_options.so", false)
-      .loadAndCreateLink("libboost_filesystem.so.1.84.0", 
"libboost_filesystem.so", false)
-      .loadAndCreateLink("libboost_context.so.1.84.0", "libboost_context.so", 
false)
-      .loadAndCreateLink("libdouble-conversion.so.1", 
"libdouble-conversion.so", false)
-      .loadAndCreateLink("libevent-2.0.so.5", "libevent-2.0.so", false)
-      .loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
-      .loadAndCreateLink("libglog.so.0", "libglog.so", false)
-      .loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
-      .loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
-      .loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
-      .loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
-      .loadAndCreateLink("libre2.so.10", "libre2.so", false)
-      .loadAndCreateLink("libzstd.so.1", "libzstd.so", false)
-      .loadAndCreateLink("liblz4.so.1", "liblz4.so", false)
-      .commit()
+    loader.loadAndCreateLink("libboost_atomic.so.1.84.0", 
"libboost_atomic.so", false)
+    loader.loadAndCreateLink("libboost_thread.so.1.84.0", 
"libboost_thread.so", false)
+    loader.loadAndCreateLink("libboost_system.so.1.84.0", 
"libboost_system.so", false)
+    loader.loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
+    loader.loadAndCreateLink(
+      "libboost_program_options.so.1.84.0",
+      "libboost_program_options.so",
+      false)
+    loader.loadAndCreateLink("libboost_filesystem.so.1.84.0", 
"libboost_filesystem.so", false)
+    loader.loadAndCreateLink("libboost_context.so.1.84.0", 
"libboost_context.so", false)
+    loader.loadAndCreateLink("libdouble-conversion.so.1", 
"libdouble-conversion.so", false)
+    loader.loadAndCreateLink("libevent-2.0.so.5", "libevent-2.0.so", false)
+    loader.loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
+    loader.loadAndCreateLink("libglog.so.0", "libglog.so", false)
+    loader.loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
+    loader.loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
+    loader.loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
+    loader.loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
+    loader.loadAndCreateLink("libre2.so.10", "libre2.so", false)
+    loader.loadAndCreateLink("libzstd.so.1", "libzstd.so", false)
+    loader.loadAndCreateLink("liblz4.so.1", "liblz4.so", false)
   }
 }
diff --git 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos8.scala
 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos8.scala
index c1d3bf2e2..bd8bf15be 100755
--- 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos8.scala
+++ 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos8.scala
@@ -20,30 +20,30 @@ import org.apache.gluten.vectorized.JniLibLoader
 
 class SharedLibraryLoaderCentos8 extends SharedLibraryLoader {
   override def loadLib(loader: JniLibLoader): Unit = {
-    loader
-      .newTransaction()
-      .loadAndCreateLink("libboost_atomic.so.1.84.0", "libboost_atomic.so", 
false)
-      .loadAndCreateLink("libboost_thread.so.1.84.0", "libboost_thread.so", 
false)
-      .loadAndCreateLink("libboost_system.so.1.84.0", "libboost_system.so", 
false)
-      .loadAndCreateLink("libicudata.so.60", "libicudata.so", false)
-      .loadAndCreateLink("libicuuc.so.60", "libicuuc.so", false)
-      .loadAndCreateLink("libicui18n.so.60", "libicui18n.so", false)
-      .loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
-      .loadAndCreateLink("libboost_program_options.so.1.84.0", 
"libboost_program_options.so", false)
-      .loadAndCreateLink("libboost_filesystem.so.1.84.0", 
"libboost_filesystem.so", false)
-      .loadAndCreateLink("libboost_context.so.1.84.0", "libboost_context.so", 
false)
-      .loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
-      .loadAndCreateLink("libevent-2.1.so.6", "libevent-2.1.so", false)
-      .loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
-      .loadAndCreateLink("libglog.so.1", "libglog.so", false)
-      .loadAndCreateLink("libdwarf.so.1", "libdwarf.so", false)
-      .loadAndCreateLink("libidn.so.11", "libidn.so", false)
-      .loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
-      .loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
-      .loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
-      .loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
-      .loadAndCreateLink("libre2.so.0", "libre2.so", false)
-      .loadAndCreateLink("libsodium.so.23", "libsodium.so", false)
-      .commit()
+    loader.loadAndCreateLink("libboost_atomic.so.1.84.0", 
"libboost_atomic.so", false)
+    loader.loadAndCreateLink("libboost_thread.so.1.84.0", 
"libboost_thread.so", false)
+    loader.loadAndCreateLink("libboost_system.so.1.84.0", 
"libboost_system.so", false)
+    loader.loadAndCreateLink("libicudata.so.60", "libicudata.so", false)
+    loader.loadAndCreateLink("libicuuc.so.60", "libicuuc.so", false)
+    loader.loadAndCreateLink("libicui18n.so.60", "libicui18n.so", false)
+    loader.loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
+    loader.loadAndCreateLink(
+      "libboost_program_options.so.1.84.0",
+      "libboost_program_options.so",
+      false)
+    loader.loadAndCreateLink("libboost_filesystem.so.1.84.0", 
"libboost_filesystem.so", false)
+    loader.loadAndCreateLink("libboost_context.so.1.84.0", 
"libboost_context.so", false)
+    loader.loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
+    loader.loadAndCreateLink("libevent-2.1.so.6", "libevent-2.1.so", false)
+    loader.loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
+    loader.loadAndCreateLink("libglog.so.1", "libglog.so", false)
+    loader.loadAndCreateLink("libdwarf.so.1", "libdwarf.so", false)
+    loader.loadAndCreateLink("libidn.so.11", "libidn.so", false)
+    loader.loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
+    loader.loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
+    loader.loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
+    loader.loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
+    loader.loadAndCreateLink("libre2.so.0", "libre2.so", false)
+    loader.loadAndCreateLink("libsodium.so.23", "libsodium.so", false)
   }
 }
diff --git 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos9.scala
 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos9.scala
index 2d9ececb3..06fb25c8b 100755
--- 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos9.scala
+++ 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderCentos9.scala
@@ -20,30 +20,30 @@ import org.apache.gluten.vectorized.JniLibLoader
 
 class SharedLibraryLoaderCentos9 extends SharedLibraryLoader {
   override def loadLib(loader: JniLibLoader): Unit = {
-    loader
-      .newTransaction()
-      .loadAndCreateLink("libboost_atomic.so.1.84.0", "libboost_atomic.so", 
false)
-      .loadAndCreateLink("libboost_thread.so.1.84.0", "libboost_thread.so", 
false)
-      .loadAndCreateLink("libboost_system.so.1.84.0", "libboost_system.so", 
false)
-      .loadAndCreateLink("libicudata.so.67", "libicudata.so", false)
-      .loadAndCreateLink("libicuuc.so.67", "libicuuc.so", false)
-      .loadAndCreateLink("libicui18n.so.67", "libicui18n.so", false)
-      .loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
-      .loadAndCreateLink("libboost_program_options.so.1.84.0", 
"libboost_program_options.so", false)
-      .loadAndCreateLink("libboost_filesystem.so.1.84.0", 
"libboost_filesystem.so", false)
-      .loadAndCreateLink("libboost_context.so.1.84.0", "libboost_context.so", 
false)
-      .loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
-      .loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
-      .loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
-      .loadAndCreateLink("libglog.so.1", "libglog.so", false)
-      .loadAndCreateLink("libdwarf.so.0", "libdwarf.so", false)
-      .loadAndCreateLink("libidn.so.12", "libidn.so", false)
-      .loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
-      .loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
-      .loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
-      .loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
-      .loadAndCreateLink("libre2.so.9", "libre2.so", false)
-      .loadAndCreateLink("libsodium.so.23", "libsodium.so", false)
-      .commit()
+    loader.loadAndCreateLink("libboost_atomic.so.1.84.0", 
"libboost_atomic.so", false)
+    loader.loadAndCreateLink("libboost_thread.so.1.84.0", 
"libboost_thread.so", false)
+    loader.loadAndCreateLink("libboost_system.so.1.84.0", 
"libboost_system.so", false)
+    loader.loadAndCreateLink("libicudata.so.67", "libicudata.so", false)
+    loader.loadAndCreateLink("libicuuc.so.67", "libicuuc.so", false)
+    loader.loadAndCreateLink("libicui18n.so.67", "libicui18n.so", false)
+    loader.loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
+    loader.loadAndCreateLink(
+      "libboost_program_options.so.1.84.0",
+      "libboost_program_options.so",
+      false)
+    loader.loadAndCreateLink("libboost_filesystem.so.1.84.0", 
"libboost_filesystem.so", false)
+    loader.loadAndCreateLink("libboost_context.so.1.84.0", 
"libboost_context.so", false)
+    loader.loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
+    loader.loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
+    loader.loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
+    loader.loadAndCreateLink("libglog.so.1", "libglog.so", false)
+    loader.loadAndCreateLink("libdwarf.so.0", "libdwarf.so", false)
+    loader.loadAndCreateLink("libidn.so.12", "libidn.so", false)
+    loader.loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
+    loader.loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
+    loader.loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
+    loader.loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
+    loader.loadAndCreateLink("libre2.so.9", "libre2.so", false)
+    loader.loadAndCreateLink("libsodium.so.23", "libsodium.so", false)
   }
 }
diff --git 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderDebian11.scala
 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderDebian11.scala
index ca7d1d22d..a300cc5b9 100644
--- 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderDebian11.scala
+++ 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderDebian11.scala
@@ -20,33 +20,30 @@ import org.apache.gluten.vectorized.JniLibLoader
 
 class SharedLibraryLoaderDebian11 extends SharedLibraryLoader {
   override def loadLib(loader: JniLibLoader): Unit = {
-    loader
-      .newTransaction()
-      .loadAndCreateLink("libicudata.so.67", "libicudata.so", false)
-      .loadAndCreateLink("libre2.so.9", "libre2.so", false)
-      .loadAndCreateLink("libicuuc.so.67", "libicuuc.so", false)
-      .loadAndCreateLink("liblber-2.4.so.2", "liblber-2.4.so", false)
-      .loadAndCreateLink("libsasl2.so.2", "libsasl2.so", false)
-      .loadAndCreateLink("libbrotlicommon.so.1", "libbrotlicommon.so", false)
-      .loadAndCreateLink("libicui18n.so.67", "libicui18n.so", false)
-      .loadAndCreateLink("libunwind.so.8", "libunwind.so", false)
-      .loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
-      .loadAndCreateLink("libnghttp2.so.14", "libnghttp2.so", false)
-      .loadAndCreateLink("librtmp.so.1", "librtmp.so", false)
-      .loadAndCreateLink("libssh2.so.1", "libssh2.so", false)
-      .loadAndCreateLink("libpsl.so.5", "libpsl.so", false)
-      .loadAndCreateLink("libldap_r-2.4.so.2", "libldap_r-2.4.so", false)
-      .loadAndCreateLink("libbrotlidec.so.1", "libbrotlidec.so", false)
-      .loadAndCreateLink("libthrift-0.13.0.so", "libthrift.so", false)
-      .loadAndCreateLink("libboost_context.so.1.84.0", "libboost_context.so", 
false)
-      .loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
-      .loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
-      .loadAndCreateLink("libglog.so.0", "libglog.so", false)
-      .loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
-      .loadAndCreateLink("libsnappy.so.1", "libsnappy.so", false)
-      .loadAndCreateLink("libcurl.so.4", "libcurl.so", false)
-      .loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
-      .loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
-      .commit()
+    loader.loadAndCreateLink("libicudata.so.67", "libicudata.so", false)
+    loader.loadAndCreateLink("libre2.so.9", "libre2.so", false)
+    loader.loadAndCreateLink("libicuuc.so.67", "libicuuc.so", false)
+    loader.loadAndCreateLink("liblber-2.4.so.2", "liblber-2.4.so", false)
+    loader.loadAndCreateLink("libsasl2.so.2", "libsasl2.so", false)
+    loader.loadAndCreateLink("libbrotlicommon.so.1", "libbrotlicommon.so", 
false)
+    loader.loadAndCreateLink("libicui18n.so.67", "libicui18n.so", false)
+    loader.loadAndCreateLink("libunwind.so.8", "libunwind.so", false)
+    loader.loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
+    loader.loadAndCreateLink("libnghttp2.so.14", "libnghttp2.so", false)
+    loader.loadAndCreateLink("librtmp.so.1", "librtmp.so", false)
+    loader.loadAndCreateLink("libssh2.so.1", "libssh2.so", false)
+    loader.loadAndCreateLink("libpsl.so.5", "libpsl.so", false)
+    loader.loadAndCreateLink("libldap_r-2.4.so.2", "libldap_r-2.4.so", false)
+    loader.loadAndCreateLink("libbrotlidec.so.1", "libbrotlidec.so", false)
+    loader.loadAndCreateLink("libthrift-0.13.0.so", "libthrift.so", false)
+    loader.loadAndCreateLink("libboost_context.so.1.84.0", 
"libboost_context.so", false)
+    loader.loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
+    loader.loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
+    loader.loadAndCreateLink("libglog.so.0", "libglog.so", false)
+    loader.loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
+    loader.loadAndCreateLink("libsnappy.so.1", "libsnappy.so", false)
+    loader.loadAndCreateLink("libcurl.so.4", "libcurl.so", false)
+    loader.loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
+    loader.loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
   }
 }
diff --git 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderDebian12.scala
 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderDebian12.scala
index 128c8eaa2..8e24ef0ba 100644
--- 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderDebian12.scala
+++ 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderDebian12.scala
@@ -20,39 +20,36 @@ import org.apache.gluten.vectorized.JniLibLoader
 
 class SharedLibraryLoaderDebian12 extends SharedLibraryLoader {
   override def loadLib(loader: JniLibLoader): Unit = {
-    loader
-      .newTransaction()
-      .loadAndCreateLink("libcrypto.so.3", "libcrypto.so", false)
-      .loadAndCreateLink("libkrb5support.so.0", "libkrb5support.so", false)
-      .loadAndCreateLink("libssl.so.3", "libssl.so", false)
-      .loadAndCreateLink("libicudata.so.72", "libicudata.so", false)
-      .loadAndCreateLink("libk5crypto.so.3", "libk5crypto.so", false)
-      .loadAndCreateLink("libkeyutils.so.1", "libkeyutils.so", false)
-      .loadAndCreateLink("libsnappy.so.1", "libsnappy.so", false)
-      .loadAndCreateLink("libthrift-0.17.0.so", "libthrift.so", false)
-      .loadAndCreateLink("libicuuc.so.72", "libicuuc.so", false)
-      .loadAndCreateLink("libkrb5.so.3", "libkrb5.so", false)
-      .loadAndCreateLink("liblber-2.5.so.0", "liblber-2.4.so", false)
-      .loadAndCreateLink("libsasl2.so.2", "libsasl2.so", false)
-      .loadAndCreateLink("libbrotlicommon.so.1", "libbrotlicommon.so", false)
-      .loadAndCreateLink("libicui18n.so.72", "libicui18n.so", false)
-      .loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
-      .loadAndCreateLink("libunwind.so.8", "libunwind.so", false)
-      .loadAndCreateLink("libnghttp2.so.14", "libnghttp2.so", false)
-      .loadAndCreateLink("librtmp.so.1", "librtmp.so", false)
-      .loadAndCreateLink("libssh2.so.1", "libssh2.so", false)
-      .loadAndCreateLink("libpsl.so.5", "libpsl.so", false)
-      .loadAndCreateLink("libgssapi_krb5.so.2", "libgssapi_krb5.so", false)
-      .loadAndCreateLink("libldap-2.5.so.0", "libldap_r-2.4.so", false)
-      .loadAndCreateLink("libbrotlidec.so.1", "libbrotlidec.so", false)
-      .loadAndCreateLink("libboost_context.so.1.84.0", "libboost_context.so", 
false)
-      .loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
-      .loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
-      .loadAndCreateLink("libglog.so.1", "libglog.so", false)
-      .loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
-      .loadAndCreateLink("libcurl.so.4", "libcurl.so", false)
-      .loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
-      .loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
-      .commit()
+    loader.loadAndCreateLink("libcrypto.so.3", "libcrypto.so", false)
+    loader.loadAndCreateLink("libkrb5support.so.0", "libkrb5support.so", false)
+    loader.loadAndCreateLink("libssl.so.3", "libssl.so", false)
+    loader.loadAndCreateLink("libicudata.so.72", "libicudata.so", false)
+    loader.loadAndCreateLink("libk5crypto.so.3", "libk5crypto.so", false)
+    loader.loadAndCreateLink("libkeyutils.so.1", "libkeyutils.so", false)
+    loader.loadAndCreateLink("libsnappy.so.1", "libsnappy.so", false)
+    loader.loadAndCreateLink("libthrift-0.17.0.so", "libthrift.so", false)
+    loader.loadAndCreateLink("libicuuc.so.72", "libicuuc.so", false)
+    loader.loadAndCreateLink("libkrb5.so.3", "libkrb5.so", false)
+    loader.loadAndCreateLink("liblber-2.5.so.0", "liblber-2.4.so", false)
+    loader.loadAndCreateLink("libsasl2.so.2", "libsasl2.so", false)
+    loader.loadAndCreateLink("libbrotlicommon.so.1", "libbrotlicommon.so", 
false)
+    loader.loadAndCreateLink("libicui18n.so.72", "libicui18n.so", false)
+    loader.loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
+    loader.loadAndCreateLink("libunwind.so.8", "libunwind.so", false)
+    loader.loadAndCreateLink("libnghttp2.so.14", "libnghttp2.so", false)
+    loader.loadAndCreateLink("librtmp.so.1", "librtmp.so", false)
+    loader.loadAndCreateLink("libssh2.so.1", "libssh2.so", false)
+    loader.loadAndCreateLink("libpsl.so.5", "libpsl.so", false)
+    loader.loadAndCreateLink("libgssapi_krb5.so.2", "libgssapi_krb5.so", false)
+    loader.loadAndCreateLink("libldap-2.5.so.0", "libldap_r-2.4.so", false)
+    loader.loadAndCreateLink("libbrotlidec.so.1", "libbrotlidec.so", false)
+    loader.loadAndCreateLink("libboost_context.so.1.84.0", 
"libboost_context.so", false)
+    loader.loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
+    loader.loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
+    loader.loadAndCreateLink("libglog.so.1", "libglog.so", false)
+    loader.loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
+    loader.loadAndCreateLink("libcurl.so.4", "libcurl.so", false)
+    loader.loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
+    loader.loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
   }
 }
diff --git 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderUbuntu2004.scala
 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderUbuntu2004.scala
index 18f2e6cfb..a03a0a7e8 100755
--- 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderUbuntu2004.scala
+++ 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderUbuntu2004.scala
@@ -20,49 +20,46 @@ import org.apache.gluten.vectorized.JniLibLoader
 
 class SharedLibraryLoaderUbuntu2004 extends SharedLibraryLoader {
   override def loadLib(loader: JniLibLoader): Unit = {
-    loader
-      .newTransaction()
-      .loadAndCreateLink("libroken.so.18", "libroken.so", false)
-      .loadAndCreateLink("libasn1.so.8", "libasn1.so", false)
-      .loadAndCreateLink("libboost_context.so.1.84.0", "libboost_context.so", 
false)
-      .loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
-      .loadAndCreateLink("libbrotlicommon.so.1", "libbrotlicommon.so", false)
-      .loadAndCreateLink("libbrotlidec.so.1", "libbrotlidec.so", false)
-      .loadAndCreateLink("libpsl.so.5", "libpsl.so", false)
-      .loadAndCreateLink("libcrypto.so.1.1", "libcrypto.so", false)
-      .loadAndCreateLink("libnghttp2.so.14", "libnghttp2.so", false)
-      .loadAndCreateLink("libnettle.so.7", "libnettle.so", false)
-      .loadAndCreateLink("libhogweed.so.5", "libhogweed.so", false)
-      .loadAndCreateLink("librtmp.so.1", "librtmp.so", false)
-      .loadAndCreateLink("libssh.so.4", "libssh.so", false)
-      .loadAndCreateLink("libssl.so.1.1", "libssl.so", false)
-      .loadAndCreateLink("liblber-2.4.so.2", "liblber-2.4.so", false)
-      .loadAndCreateLink("libsasl2.so.2", "libsasl2.so", false)
-      .loadAndCreateLink("libwind.so.0", "libwind.so", false)
-      .loadAndCreateLink("libheimbase.so.1", "libheimbase.so", false)
-      .loadAndCreateLink("libhcrypto.so.4", "libhcrypto.so", false)
-      .loadAndCreateLink("libhx509.so.5", "libhx509.so", false)
-      .loadAndCreateLink("libkrb5.so.26", "libkrb5.so", false)
-      .loadAndCreateLink("libheimntlm.so.0", "libheimntlm.so", false)
-      .loadAndCreateLink("libgssapi.so.3", "libgssapi.so", false)
-      .loadAndCreateLink("libldap_r-2.4.so.2", "libldap_r-2.4.so", false)
-      .loadAndCreateLink("libcurl.so.4", "libcurl.so", false)
-      .loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
-      .loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
-      .loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
-      .loadAndCreateLink("libunwind.so.8", "libunwind.so", false)
-      .loadAndCreateLink("libglog.so.0", "libglog.so", false)
-      .loadAndCreateLink("libidn.so.11", "libidn.so", false)
-      .loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
-      .loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
-      .loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
-      .loadAndCreateLink("libicudata.so.66", "libicudata.so", false)
-      .loadAndCreateLink("libicuuc.so.66", "libicuuc.so", false)
-      .loadAndCreateLink("libxml2.so.2", "libxml2.so", false)
-      .loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
-      .loadAndCreateLink("libre2.so.5", "libre2.so", false)
-      .loadAndCreateLink("libsnappy.so.1", "libsnappy.so", false)
-      .loadAndCreateLink("libthrift-0.13.0.so", "libthrift.so", false)
-      .commit()
+    loader.loadAndCreateLink("libroken.so.18", "libroken.so", false)
+    loader.loadAndCreateLink("libasn1.so.8", "libasn1.so", false)
+    loader.loadAndCreateLink("libboost_context.so.1.84.0", 
"libboost_context.so", false)
+    loader.loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
+    loader.loadAndCreateLink("libbrotlicommon.so.1", "libbrotlicommon.so", 
false)
+    loader.loadAndCreateLink("libbrotlidec.so.1", "libbrotlidec.so", false)
+    loader.loadAndCreateLink("libpsl.so.5", "libpsl.so", false)
+    loader.loadAndCreateLink("libcrypto.so.1.1", "libcrypto.so", false)
+    loader.loadAndCreateLink("libnghttp2.so.14", "libnghttp2.so", false)
+    loader.loadAndCreateLink("libnettle.so.7", "libnettle.so", false)
+    loader.loadAndCreateLink("libhogweed.so.5", "libhogweed.so", false)
+    loader.loadAndCreateLink("librtmp.so.1", "librtmp.so", false)
+    loader.loadAndCreateLink("libssh.so.4", "libssh.so", false)
+    loader.loadAndCreateLink("libssl.so.1.1", "libssl.so", false)
+    loader.loadAndCreateLink("liblber-2.4.so.2", "liblber-2.4.so", false)
+    loader.loadAndCreateLink("libsasl2.so.2", "libsasl2.so", false)
+    loader.loadAndCreateLink("libwind.so.0", "libwind.so", false)
+    loader.loadAndCreateLink("libheimbase.so.1", "libheimbase.so", false)
+    loader.loadAndCreateLink("libhcrypto.so.4", "libhcrypto.so", false)
+    loader.loadAndCreateLink("libhx509.so.5", "libhx509.so", false)
+    loader.loadAndCreateLink("libkrb5.so.26", "libkrb5.so", false)
+    loader.loadAndCreateLink("libheimntlm.so.0", "libheimntlm.so", false)
+    loader.loadAndCreateLink("libgssapi.so.3", "libgssapi.so", false)
+    loader.loadAndCreateLink("libldap_r-2.4.so.2", "libldap_r-2.4.so", false)
+    loader.loadAndCreateLink("libcurl.so.4", "libcurl.so", false)
+    loader.loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
+    loader.loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
+    loader.loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
+    loader.loadAndCreateLink("libunwind.so.8", "libunwind.so", false)
+    loader.loadAndCreateLink("libglog.so.0", "libglog.so", false)
+    loader.loadAndCreateLink("libidn.so.11", "libidn.so", false)
+    loader.loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
+    loader.loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
+    loader.loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
+    loader.loadAndCreateLink("libicudata.so.66", "libicudata.so", false)
+    loader.loadAndCreateLink("libicuuc.so.66", "libicuuc.so", false)
+    loader.loadAndCreateLink("libxml2.so.2", "libxml2.so", false)
+    loader.loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
+    loader.loadAndCreateLink("libre2.so.5", "libre2.so", false)
+    loader.loadAndCreateLink("libsnappy.so.1", "libsnappy.so", false)
+    loader.loadAndCreateLink("libthrift-0.13.0.so", "libthrift.so", false)
   }
 }
diff --git 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderUbuntu2204.scala
 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderUbuntu2204.scala
index b23105b7d..4bb2b59b3 100755
--- 
a/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderUbuntu2204.scala
+++ 
b/backends-velox/src/main/scala/org/apache/gluten/utils/SharedLibraryLoaderUbuntu2204.scala
@@ -20,34 +20,31 @@ import org.apache.gluten.vectorized.JniLibLoader
 
 class SharedLibraryLoaderUbuntu2204 extends SharedLibraryLoader {
   override def loadLib(loader: JniLibLoader): Unit = {
-    loader
-      .newTransaction()
-      .loadAndCreateLink("libboost_context.so.1.84.0", "libboost_context.so", 
false)
-      .loadAndCreateLink("libicudata.so.70", "libicudata.so", false)
-      .loadAndCreateLink("libicuuc.so.70", "libicuuc.so", false)
-      .loadAndCreateLink("libicui18n.so.70", "libicui18n.so", false)
-      .loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
-      .loadAndCreateLink("libnghttp2.so.14", "libnghttp2.so", false)
-      .loadAndCreateLink("librtmp.so.1", "librtmp.so", false)
-      .loadAndCreateLink("libssh.so.4", "libssh.so", false)
-      .loadAndCreateLink("libsasl2.so.2", "libsasl2.so", false)
-      .loadAndCreateLink("liblber-2.5.so.0", "liblber-2.5.so", false)
-      .loadAndCreateLink("libldap-2.5.so.0", "libldap-2.5.so", false)
-      .loadAndCreateLink("libcurl.so.4", "libcurl.so", false)
-      .loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
-      .loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
-      .loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
-      .loadAndCreateLink("libunwind.so.8", "libunwind.so", false)
-      .loadAndCreateLink("libglog.so.0", "libglog.so", false)
-      .loadAndCreateLink("libidn.so.12", "libidn.so", false)
-      .loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
-      .loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
-      .loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
-      .loadAndCreateLink("libxml2.so.2", "libxml2.so", false)
-      .loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
-      .loadAndCreateLink("libre2.so.9", "libre2.so", false)
-      .loadAndCreateLink("libsnappy.so.1", "libsnappy.so", false)
-      .loadAndCreateLink("libthrift-0.16.0.so", "libthrift.so", false)
-      .commit()
+    loader.loadAndCreateLink("libboost_context.so.1.84.0", 
"libboost_context.so", false)
+    loader.loadAndCreateLink("libicudata.so.70", "libicudata.so", false)
+    loader.loadAndCreateLink("libicuuc.so.70", "libicuuc.so", false)
+    loader.loadAndCreateLink("libicui18n.so.70", "libicui18n.so", false)
+    loader.loadAndCreateLink("libboost_regex.so.1.84.0", "libboost_regex.so", 
false)
+    loader.loadAndCreateLink("libnghttp2.so.14", "libnghttp2.so", false)
+    loader.loadAndCreateLink("librtmp.so.1", "librtmp.so", false)
+    loader.loadAndCreateLink("libssh.so.4", "libssh.so", false)
+    loader.loadAndCreateLink("libsasl2.so.2", "libsasl2.so", false)
+    loader.loadAndCreateLink("liblber-2.5.so.0", "liblber-2.5.so", false)
+    loader.loadAndCreateLink("libldap-2.5.so.0", "libldap-2.5.so", false)
+    loader.loadAndCreateLink("libcurl.so.4", "libcurl.so", false)
+    loader.loadAndCreateLink("libdouble-conversion.so.3", 
"libdouble-conversion.so", false)
+    loader.loadAndCreateLink("libevent-2.1.so.7", "libevent-2.1.so", false)
+    loader.loadAndCreateLink("libgflags.so.2.2", "libgflags.so", false)
+    loader.loadAndCreateLink("libunwind.so.8", "libunwind.so", false)
+    loader.loadAndCreateLink("libglog.so.0", "libglog.so", false)
+    loader.loadAndCreateLink("libidn.so.12", "libidn.so", false)
+    loader.loadAndCreateLink("libntlm.so.0", "libntlm.so", false)
+    loader.loadAndCreateLink("libgsasl.so.7", "libgsasl.so", false)
+    loader.loadAndCreateLink("libprotobuf.so.32", "libprotobuf.so", false)
+    loader.loadAndCreateLink("libxml2.so.2", "libxml2.so", false)
+    loader.loadAndCreateLink("libhdfs3.so.1", "libhdfs3.so", false)
+    loader.loadAndCreateLink("libre2.so.9", "libre2.so", false)
+    loader.loadAndCreateLink("libsnappy.so.1", "libsnappy.so", false)
+    loader.loadAndCreateLink("libthrift-0.16.0.so", "libthrift.so", false)
   }
 }
diff --git 
a/gluten-core/src/main/java/org/apache/gluten/vectorized/JniLibLoader.java 
b/gluten-core/src/main/java/org/apache/gluten/vectorized/JniLibLoader.java
index b1feb1e5b..37cd29649 100644
--- a/gluten-core/src/main/java/org/apache/gluten/vectorized/JniLibLoader.java
+++ b/gluten-core/src/main/java/org/apache/gluten/vectorized/JniLibLoader.java
@@ -35,30 +35,20 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
-import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.Vector;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 import scala.runtime.BoxedUnit;
 
-/**
- * LoadXXX methods in the utility prevents reloading of a library internally. 
It's not necessary for
- * caller to manage a loaded library list.
- */
 public class JniLibLoader {
   private static final Logger LOG = 
LoggerFactory.getLogger(JniLibLoader.class);
 
-  private static final Set<String> LOADED_LIBRARY_PATHS = new HashSet<>();
-  private static final Set<String> REQUIRE_UNLOAD_LIBRARY_PATHS = new 
LinkedHashSet<>();
+  private static final Set<String> LOADED_LIBRARY_PATHS =
+      Collections.synchronizedSet(new HashSet<>());
+  private static final Set<String> REQUIRE_UNLOAD_LIBRARY_PATHS =
+      Collections.synchronizedSet(new LinkedHashSet<>());
 
   static {
     GlutenShutdownManager.addHookForLibUnloading(
@@ -69,15 +59,17 @@ public class JniLibLoader {
   }
 
   private final String workDir;
-  private final Set<String> loadedLibraries = new HashSet<>();
-  private final Lock sync = new ReentrantLock();
+  private final Set<String> loadedLibraries = Collections.synchronizedSet(new 
HashSet<>());
 
   JniLibLoader(String workDir) {
     this.workDir = workDir;
   }
 
-  public static synchronized void forceUnloadAll() {
-    List<String> loaded = new ArrayList<>(REQUIRE_UNLOAD_LIBRARY_PATHS);
+  public static void forceUnloadAll() {
+    List<String> loaded;
+    synchronized (REQUIRE_UNLOAD_LIBRARY_PATHS) {
+      loaded = new ArrayList<>(REQUIRE_UNLOAD_LIBRARY_PATHS);
+    }
     Collections.reverse(loaded); // use reversed order to unload
     loaded.forEach(JniLibLoader::unloadFromPath);
   }
@@ -95,21 +87,25 @@ public class JniLibLoader {
     }
   }
 
-  private static synchronized void loadFromPath0(String libPath, boolean 
requireUnload) {
+  private static void loadFromPath0(String libPath, boolean requireUnload) {
     libPath = toRealPath(libPath);
-    if (LOADED_LIBRARY_PATHS.contains(libPath)) {
-      LOG.debug("Library in path {} has already been loaded, skipping", 
libPath);
-    } else {
-      System.load(libPath);
-      LOADED_LIBRARY_PATHS.add(libPath);
-      LOG.info("Library {} has been loaded using path-loading method", 
libPath);
+    synchronized (LOADED_LIBRARY_PATHS) {
+      if (LOADED_LIBRARY_PATHS.contains(libPath)) {
+        LOG.debug("Library in path {} has already been loaded, skipping", 
libPath);
+      } else {
+        System.load(libPath);
+        LOADED_LIBRARY_PATHS.add(libPath);
+        LOG.info("Library {} has been loaded using path-loading method", 
libPath);
+      }
     }
     if (requireUnload) {
-      REQUIRE_UNLOAD_LIBRARY_PATHS.add(libPath);
+      synchronized (REQUIRE_UNLOAD_LIBRARY_PATHS) {
+        REQUIRE_UNLOAD_LIBRARY_PATHS.add(libPath);
+      }
     }
   }
 
-  public static void loadFromPath(String libPath, boolean requireUnload) {
+  public static synchronized void loadFromPath(String libPath, boolean 
requireUnload) {
     final File file = new File(libPath);
     if (!file.isFile() || !file.exists()) {
       throw new GlutenException("library at path: " + libPath + " is not a 
file or does not exist");
@@ -117,55 +113,42 @@ public class JniLibLoader {
     loadFromPath0(file.getAbsolutePath(), requireUnload);
   }
 
-  public void mapAndLoad(String unmappedLibName, boolean requireUnload) {
-    newTransaction().mapAndLoad(unmappedLibName, requireUnload).commit();
-  }
-
-  public void load(String libName, boolean requireUnload) {
-    newTransaction().load(libName, requireUnload).commit();
-  }
-
-  public void loadAndCreateLink(String libName, String linkName, boolean 
requireUnload) {
-    newTransaction().loadAndCreateLink(libName, linkName, 
requireUnload).commit();
-  }
-
-  public JniLoadTransaction newTransaction() {
-    return new JniLoadTransaction();
-  }
-
-  public static synchronized void unloadFromPath(String libPath) {
-    if (!LOADED_LIBRARY_PATHS.remove(libPath)) {
-      LOG.warn("Library {} was not loaded or alreay unloaded:", libPath);
-      return;
+  public static void unloadFromPath(String libPath) {
+    synchronized (LOADED_LIBRARY_PATHS) {
+      if (!LOADED_LIBRARY_PATHS.remove(libPath)) {
+        LOG.warn("Library {} was not loaded or already unloaded:", libPath);
+        return;
+      }
     }
-
     LOG.info("Starting unload library path: {} ", libPath);
-    REQUIRE_UNLOAD_LIBRARY_PATHS.remove(libPath);
-
+    synchronized (REQUIRE_UNLOAD_LIBRARY_PATHS) {
+      REQUIRE_UNLOAD_LIBRARY_PATHS.remove(libPath);
+    }
     try {
       ClassLoader classLoader = JniLibLoader.class.getClassLoader();
       Field field = ClassLoader.class.getDeclaredField("nativeLibraries");
       field.setAccessible(true);
       Vector<Object> libs = (Vector<Object>) field.get(classLoader);
-      Iterator it = libs.iterator();
-      while (it.hasNext()) {
-        Object object = it.next();
-        Field[] fs = object.getClass().getDeclaredFields();
-        for (int k = 0; k < fs.length; k++) {
-          if (fs[k].getName().equals("name")) {
-            fs[k].setAccessible(true);
-
-            String verbosePath = fs[k].get(object).toString();
-            File verboseFile = new File(verbosePath);
-            String verboseFileName = verboseFile.getName();
-            File libFile = new File(libPath);
-            String libFileName = libFile.getName();
-
-            if (verboseFileName.equals(libFileName)) {
-              LOG.info("Finalizing library file: {}", libFileName);
-              Method finalize = 
object.getClass().getDeclaredMethod("finalize");
-              finalize.setAccessible(true);
-              finalize.invoke(object);
+      synchronized (libs) {
+        Iterator<Object> it = libs.iterator();
+        while (it.hasNext()) {
+          Object object = it.next();
+          Field[] fs = object.getClass().getDeclaredFields();
+          for (int k = 0; k < fs.length; k++) {
+            if (fs[k].getName().equals("name")) {
+              fs[k].setAccessible(true);
+              String verbosePath = fs[k].get(object).toString();
+              File verboseFile = new File(verbosePath);
+              String verboseFileName = verboseFile.getName();
+              File libFile = new File(libPath);
+              String libFileName = libFile.getName();
+
+              if (verboseFileName.equals(libFileName)) {
+                LOG.info("Finalizing library file: {}", libFileName);
+                Method finalize = 
object.getClass().getDeclaredMethod("finalize");
+                finalize.setAccessible(true);
+                finalize.invoke(object);
+              }
             }
           }
         }
@@ -175,160 +158,77 @@ public class JniLibLoader {
     }
   }
 
-  private static final class LoadRequest {
-    final String libName;
-    final String linkName;
-    final boolean requireUnload;
-
-    private LoadRequest(String libName, String linkName, boolean 
requireUnload) {
-      this.libName = libName;
-      this.linkName = linkName;
-      this.requireUnload = requireUnload;
-    }
-  }
-
-  private static final class LoadAction {
-    final String libName;
-    final String linkName;
-    final boolean requireUnload;
-    final File file;
-
-    private LoadAction(String libName, String linkName, boolean requireUnload, 
File file) {
-      this.libName = libName;
-      this.linkName = linkName;
-      this.requireUnload = requireUnload;
-      this.file = file;
-    }
-
-    public boolean requireLinking() {
-      return !Objects.isNull(linkName);
-    }
-  }
-
-  public class JniLoadTransaction {
-    private final AtomicBoolean finished = new AtomicBoolean(false);
-    private final Map<String, LoadRequest> toLoad = new LinkedHashMap<>(); // 
ordered
-
-    private JniLoadTransaction() {
-      JniLibLoader.this.sync.lock();
-    }
-
-    public JniLoadTransaction mapAndLoad(String unmappedLibName, boolean 
requireUnload) {
+  public void mapAndLoad(String unmappedLibName, boolean requireUnload) {
+    synchronized (loadedLibraries) {
       try {
         final String mappedLibName = System.mapLibraryName(unmappedLibName);
         load(mappedLibName, requireUnload);
-        return this;
       } catch (Exception e) {
-        abort();
         throw new GlutenException(e);
       }
     }
+  }
 
-    public JniLoadTransaction load(String libName, boolean requireUnload) {
+  public void load(String libName, boolean requireUnload) {
+    synchronized (loadedLibraries) {
       try {
-        toLoad.put(libName, new LoadRequest(libName, null, requireUnload));
-        return this;
-      } catch (Exception e) {
-        abort();
+        if (loadedLibraries.contains(libName)) {
+          LOG.debug("Library {} has already been loaded, skipping", libName);
+          return;
+        }
+        File file = moveToWorkDir(workDir, libName);
+        loadWithLink(file.getAbsolutePath(), null, requireUnload);
+        loadedLibraries.add(libName);
+        LOG.info("Successfully loaded library {}", libName);
+      } catch (IOException e) {
         throw new GlutenException(e);
       }
     }
+  }
 
-    public JniLoadTransaction loadAndCreateLink(
-        String libName, String linkName, boolean requireUnload) {
+  public void loadAndCreateLink(String libName, String linkName, boolean 
requireUnload) {
+    synchronized (loadedLibraries) {
       try {
-        toLoad.put(libName, new LoadRequest(libName, linkName, requireUnload));
-        return this;
-      } catch (Exception e) {
-        abort();
+        if (loadedLibraries.contains(libName)) {
+          LOG.debug("Library {} has already been loaded, skipping", libName);
+        }
+        File file = moveToWorkDir(workDir, System.mapLibraryName(libName));
+        loadWithLink(file.getAbsolutePath(), linkName, requireUnload);
+        loadedLibraries.add(libName);
+        LOG.info("Successfully loaded library {}", libName);
+      } catch (IOException e) {
         throw new GlutenException(e);
       }
     }
+  }
 
-    public void commit() {
-      try {
-        terminate();
-        toLoad.entrySet().stream()
-            .flatMap(
-                e -> {
-                  try {
-                    final LoadRequest req = e.getValue();
-                    if (loadedLibraries.contains(req.libName)) {
-                      LOG.debug("Library {} has already been loaded, 
skipping", req.libName);
-                      return Stream.empty();
-                    }
-                    // load only libraries not loaded yet
-                    final File file = moveToWorkDir(workDir, req.libName);
-                    return Stream.of(
-                        new LoadAction(req.libName, req.linkName, 
req.requireUnload, file));
-                  } catch (IOException ex) {
-                    throw new GlutenException(ex);
-                  }
-                })
-            .collect(Collectors.toList())
-            .forEach(
-                e -> {
-                  try {
-                    LOG.info("Trying to load library {}", e.libName);
-                    loadWithLink(workDir, e);
-                    loadedLibraries.add(e.libName);
-                    LOG.info("Successfully loaded library {}", e.libName);
-                  } catch (Exception ex) {
-                    throw new GlutenException(ex);
-                  }
-                });
-      } finally {
-        JniLibLoader.this.sync.unlock();
-      }
-    }
-
-    public void abort() {
-      try {
-        terminate();
-        // do nothing as of now
-      } finally {
-        JniLibLoader.this.sync.unlock();
-      }
-    }
-
-    private void terminate() {
-      if (!finished.compareAndSet(false, true)) {
-        throw new IllegalStateException();
-      }
+  private File moveToWorkDir(String workDir, String libraryToLoad) throws 
IOException {
+    // final File temp = File.createTempFile(workDir, libraryToLoad);
+    final Path libPath = Paths.get(workDir + "/" + libraryToLoad);
+    if (Files.exists(libPath)) {
+      Files.delete(libPath);
     }
-
-    private File moveToWorkDir(String workDir, String libraryToLoad) throws 
IOException {
-      // final File temp = File.createTempFile(workDir, libraryToLoad);
-      final Path libPath = Paths.get(workDir + "/" + libraryToLoad);
-      if (Files.exists(libPath)) {
-        Files.delete(libPath);
+    final File temp = new File(workDir + "/" + libraryToLoad);
+    try (InputStream is = 
JniLibLoader.class.getClassLoader().getResourceAsStream(libraryToLoad)) {
+      if (is == null) {
+        throw new FileNotFoundException(libraryToLoad);
       }
-      final File temp = new File(workDir + "/" + libraryToLoad);
-      try (InputStream is =
-          
JniLibLoader.class.getClassLoader().getResourceAsStream(libraryToLoad)) {
-        if (is == null) {
-          throw new FileNotFoundException(libraryToLoad);
-        }
-        try {
-          Files.copy(is, temp.toPath());
-        } catch (Exception e) {
-          throw new GlutenException(e);
-        }
+      try {
+        Files.copy(is, temp.toPath());
+      } catch (Exception e) {
+        throw new GlutenException(e);
       }
-      return temp;
     }
+    return temp;
+  }
 
-    private void loadWithLink(String workDir, LoadAction req) throws 
IOException {
-      String libPath = req.file.getAbsolutePath();
-      loadFromPath0(libPath, req.requireUnload);
-      LOG.info("Library {} has been loaded", libPath);
-      if (!req.requireLinking()) {
-        LOG.debug("Symbolic link not required for library {}, skipping", 
libPath);
-        return;
-      }
-      // create link
-      Path target = Paths.get(req.file.getPath());
-      Path link = Paths.get(workDir, req.linkName);
+  private void loadWithLink(String libPath, String linkName, boolean 
requireUnload)
+      throws IOException {
+    loadFromPath0(libPath, requireUnload);
+    LOG.info("Library {} has been loaded", libPath);
+    if (linkName != null) {
+      Path target = Paths.get(libPath);
+      Path link = Paths.get(workDir, linkName);
       if (Files.exists(link)) {
         LOG.info("Symbolic link already exists for library {}, deleting", 
libPath);
         Files.delete(link);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to