Return-Path: X-Original-To: apmail-hadoop-common-commits-archive@www.apache.org Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 755D3196FE for ; Thu, 7 Apr 2016 21:46:30 +0000 (UTC) Received: (qmail 12612 invoked by uid 500); 7 Apr 2016 21:46:29 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 12464 invoked by uid 500); 7 Apr 2016 21:46:29 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 12026 invoked by uid 99); 7 Apr 2016 21:46:29 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 07 Apr 2016 21:46:29 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 38F23E090B; Thu, 7 Apr 2016 21:46:29 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: aengineer@apache.org To: common-commits@hadoop.apache.org Date: Thu, 07 Apr 2016 21:46:31 -0000 Message-Id: In-Reply-To: <4dfc27ce2a2447db8671195fbecc76e4@git.apache.org> References: <4dfc27ce2a2447db8671195fbecc76e4@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [03/50] [abbrv] hadoop git commit: HADOOP-12955. Fix bugs in the initialization of the ISA-L library JNI bindings (Kai Zheng via cmccabe) HADOOP-12955. Fix bugs in the initialization of the ISA-L library JNI bindings (Kai Zheng via cmccabe) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/19639785 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/19639785 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/19639785 Branch: refs/heads/HDFS-7240 Commit: 19639785f5e9c483558ce585287b9dda9d626263 Parents: 12b11e2 Author: Colin Patrick Mccabe Authored: Thu Mar 31 15:09:11 2016 -0700 Committer: Colin Patrick Mccabe Committed: Thu Mar 31 15:09:11 2016 -0700 ---------------------------------------------------------------------- .../hadoop/util/NativeLibraryChecker.java | 8 ++-- .../hadoop/io/erasurecode/erasure_coder.c | 1 + .../apache/hadoop/io/erasurecode/isal_load.c | 46 +++++++++----------- .../apache/hadoop/io/erasurecode/isal_load.h | 6 +-- .../io/erasurecode/jni_erasure_code_native.c | 11 +++-- 5 files changed, 34 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/19639785/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NativeLibraryChecker.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NativeLibraryChecker.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NativeLibraryChecker.java index 46f0897..e166bec 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NativeLibraryChecker.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/NativeLibraryChecker.java @@ -95,12 +95,12 @@ public class NativeLibraryChecker { snappyLibraryName = SnappyCodec.getLibraryName(); } - try { - isalDetail = ErasureCodeNative.getLoadingFailureReason(); + isalDetail = ErasureCodeNative.getLoadingFailureReason(); + if (isalDetail != null) { + isalLoaded = false; + } else { isalDetail = ErasureCodeNative.getLibraryName(); isalLoaded = true; - } catch (UnsatisfiedLinkError e) { - isalLoaded = false; } openSslDetail = OpensslCipher.getLoadingFailureReason(); http://git-wip-us.apache.org/repos/asf/hadoop/blob/19639785/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/erasure_coder.c ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/erasure_coder.c b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/erasure_coder.c index b3479bb..b2d856b 100644 --- a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/erasure_coder.c +++ b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/erasure_coder.c @@ -19,6 +19,7 @@ #include "erasure_code.h" #include "gf_util.h" #include "erasure_coder.h" +#include "dump.h" #include #include http://git-wip-us.apache.org/repos/asf/hadoop/blob/19639785/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.c ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.c b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.c index 55e8efd..26d8e1a 100644 --- a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.c +++ b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.c @@ -78,6 +78,12 @@ static const char* load_functions() { void load_erasurecode_lib(char* err, size_t err_len) { const char* errMsg; + const char* library = NULL; +#ifdef UNIX + Dl_info dl_info; +#else + LPTSTR filename = NULL; +#endif err[0] = '\0'; @@ -111,38 +117,28 @@ void load_erasurecode_lib(char* err, size_t err_len) { if (errMsg != NULL) { snprintf(err, err_len, "Loading functions from ISA-L failed: %s", errMsg); } -} -int build_support_erasurecode() { -#ifdef HADOOP_ISAL_LIBRARY - return 1; -#else - return 0; -#endif -} - -const char* get_library_name() { #ifdef UNIX - Dl_info dl_info; - - if (isaLoader->ec_encode_data == NULL) { - return HADOOP_ISAL_LIBRARY; - } - if(dladdr(isaLoader->ec_encode_data, &dl_info)) { - return dl_info.dli_fname; + library = dl_info.dli_fname; } #else - LPTSTR filename = NULL; - - if (isaLoader->libec == NULL) { - return HADOOP_ISAL_LIBRARY; - } - if (GetModuleFileName(isaLoader->libec, filename, 256) > 0) { - return filename; + library = filename; } #endif - return NULL; + if (library == NULL) { + library = HADOOP_ISAL_LIBRARY; + } + + isaLoader->libname = strdup(library); } + +int build_support_erasurecode() { +#ifdef HADOOP_ISAL_LIBRARY + return 1; +#else + return 0; +#endif +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hadoop/blob/19639785/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.h ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.h b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.h index 635706d..7cb7a6a 100644 --- a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.h +++ b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/isal_load.h @@ -78,6 +78,7 @@ typedef void (__cdecl *__d_ec_encode_data_update)(int, int, int, int, unsigned c typedef struct __IsaLibLoader { // The loaded library handle void* libec; + char* libname; __d_gf_mul gf_mul; __d_gf_inv gf_inv; @@ -134,11 +135,6 @@ static FARPROC WINAPI myDlsym(HMODULE handle, LPCSTR symbol) { int build_support_erasurecode(); /** - * Get the library name possibly of full path. - */ -const char* get_library_name(); - -/** * Initialize and load erasure code library, returning error message if any. * * @param err The err message buffer. http://git-wip-us.apache.org/repos/asf/hadoop/blob/19639785/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/jni_erasure_code_native.c ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/jni_erasure_code_native.c b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/jni_erasure_code_native.c index eb09e73..b46e8a9 100644 --- a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/jni_erasure_code_native.c +++ b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/jni_erasure_code_native.c @@ -22,6 +22,7 @@ #include "org_apache_hadoop.h" #include "jni_common.h" +#include "isal_load.h" #include "org_apache_hadoop_io_erasurecode_ErasureCodeNative.h" #ifdef UNIX @@ -37,9 +38,11 @@ Java_org_apache_hadoop_io_erasurecode_ErasureCodeNative_loadLibrary JNIEXPORT jstring JNICALL Java_org_apache_hadoop_io_erasurecode_ErasureCodeNative_getLibraryName (JNIEnv *env, jclass myclass) { - char* libName = get_library_name(); - if (libName == NULL) { - libName = "Unavailable"; + if (isaLoader == NULL) { + THROW(env, "java/lang/UnsatisfiedLinkError", + "Unavailable: library not loaded yet"); + return (jstring)NULL; } - return (*env)->NewStringUTF(env, libName); + + return (*env)->NewStringUTF(env, isaLoader->libname); }