Explorar o código

HADOOP-7608. SnappyCodec check for Hadoop native lib is wrong. Contributed by Alejandro Abdelnur.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1171719 13f79535-47bb-0310-9956-ffa450edef68
Todd Lipcon %!s(int64=13) %!d(string=hai) anos
pai
achega
0d99429982

+ 3 - 0
hadoop-common-project/hadoop-common/CHANGES.txt

@@ -591,6 +591,9 @@ Release 0.23.0 - Unreleased
     HADOOP-7629. Allow immutable FsPermission objects to be used as IPC
     parameters. (todd)
 
+    HADOOP-7608. SnappyCodec check for Hadoop native lib is wrong
+    (Alejandro Abdelnur via todd)
+
 Release 0.22.0 - Unreleased
 
   INCOMPATIBLE CHANGES

+ 9 - 11
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/SnappyCodec.java

@@ -28,6 +28,7 @@ import org.apache.hadoop.io.compress.snappy.LoadSnappy;
 import org.apache.hadoop.io.compress.snappy.SnappyCompressor;
 import org.apache.hadoop.io.compress.snappy.SnappyDecompressor;
 import org.apache.hadoop.fs.CommonConfigurationKeys;
+import org.apache.hadoop.util.NativeCodeLoader;
 
 /**
  * This class creates snappy compressors/decompressors.
@@ -63,13 +64,10 @@ public class SnappyCodec implements Configurable, CompressionCodec {
   /**
    * Are the native snappy libraries loaded & initialized?
    *
-   * @param conf configuration
    * @return true if loaded & initialized, otherwise false
    */
-  public static boolean isNativeSnappyLoaded(Configuration conf) {
-    return LoadSnappy.isLoaded() && conf.getBoolean(
-        CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_KEY,
-        CommonConfigurationKeys.IO_NATIVE_LIB_AVAILABLE_DEFAULT);
+  public static boolean isNativeCodeLoaded() {
+    return LoadSnappy.isLoaded() && NativeCodeLoader.isNativeCodeLoaded();
   }
 
   /**
@@ -99,7 +97,7 @@ public class SnappyCodec implements Configurable, CompressionCodec {
   public CompressionOutputStream createOutputStream(OutputStream out,
                                                     Compressor compressor)
       throws IOException {
-    if (!isNativeSnappyLoaded(conf)) {
+    if (!isNativeCodeLoaded()) {
       throw new RuntimeException("native snappy library not available");
     }
     int bufferSize = conf.getInt(
@@ -119,7 +117,7 @@ public class SnappyCodec implements Configurable, CompressionCodec {
    */
   @Override
   public Class<? extends Compressor> getCompressorType() {
-    if (!isNativeSnappyLoaded(conf)) {
+    if (!isNativeCodeLoaded()) {
       throw new RuntimeException("native snappy library not available");
     }
 
@@ -133,7 +131,7 @@ public class SnappyCodec implements Configurable, CompressionCodec {
    */
   @Override
   public Compressor createCompressor() {
-    if (!isNativeSnappyLoaded(conf)) {
+    if (!isNativeCodeLoaded()) {
       throw new RuntimeException("native snappy library not available");
     }
     int bufferSize = conf.getInt(
@@ -169,7 +167,7 @@ public class SnappyCodec implements Configurable, CompressionCodec {
   public CompressionInputStream createInputStream(InputStream in,
                                                   Decompressor decompressor)
       throws IOException {
-    if (!isNativeSnappyLoaded(conf)) {
+    if (!isNativeCodeLoaded()) {
       throw new RuntimeException("native snappy library not available");
     }
 
@@ -185,7 +183,7 @@ public class SnappyCodec implements Configurable, CompressionCodec {
    */
   @Override
   public Class<? extends Decompressor> getDecompressorType() {
-    if (!isNativeSnappyLoaded(conf)) {
+    if (!isNativeCodeLoaded()) {
       throw new RuntimeException("native snappy library not available");
     }
 
@@ -199,7 +197,7 @@ public class SnappyCodec implements Configurable, CompressionCodec {
    */
   @Override
   public Decompressor createDecompressor() {
-    if (!isNativeSnappyLoaded(conf)) {
+    if (!isNativeCodeLoaded()) {
       throw new RuntimeException("native snappy library not available");
     }
     int bufferSize = conf.getInt(