Browse Source

HADOOP-17209. Erasure Coding: Native library memory leak. Contriubted by Sean Chow

S O'Donnell 5 years ago
parent
commit
17cd8a1b16

+ 3 - 1
hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/jni_common.c

@@ -92,6 +92,7 @@ void getInputs(JNIEnv *env, jobjectArray inputs, jintArray inputOffsets,
       destInputs[i] = NULL;
     }
   }
+  (*env)->ReleaseIntArrayElements(env, inputOffsets, tmpInputOffsets, 0);
 }
 
 void getOutputs(JNIEnv *env, jobjectArray outputs, jintArray outputOffsets,
@@ -112,4 +113,5 @@ void getOutputs(JNIEnv *env, jobjectArray outputs, jintArray outputOffsets,
                                                                   byteBuffer));
     destOutputs[i] += tmpOutputOffsets[i];
   }
-}
+  (*env)->ReleaseIntArrayElements(env, outputOffsets, tmpOutputOffsets, 0);
+}

+ 1 - 0
hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/io/erasurecode/jni_rs_decoder.c

@@ -66,6 +66,7 @@ jintArray outputOffsets) {
 
   decode(&rsDecoder->decoder, rsDecoder->inputs, tmpErasedIndexes,
                            numErased, rsDecoder->outputs, chunkSize);
+  (*env)->ReleaseIntArrayElements(env, erasedIndexes, tmpErasedIndexes, 0);
 }
 
 JNIEXPORT void JNICALL