From 7eadda67861d6c4dacac2df6c02be412a1b3de1c Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Fri, 28 Dec 2012 14:41:55 +0000 Subject: [PATCH] HIVE-3809 : Concurrency issue in RCFile: multiple threads can use the same decompressor (Mikhail Bautin via Ashutosh Chauhan) git-svn-id: https://svn.apache.org/repos/asf/hive/trunk@1426524 13f79535-47bb-0310-9956-ffa450edef68 --- ql/src/java/org/apache/hadoop/hive/ql/io/RCFile.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git ql/src/java/org/apache/hadoop/hive/ql/io/RCFile.java ql/src/java/org/apache/hadoop/hive/ql/io/RCFile.java index 8581cf3..b74c10e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/RCFile.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/RCFile.java @@ -528,7 +528,11 @@ public class RCFile { } if (codec != null) { IOUtils.closeStream(decompressBuffer); - CodecPool.returnDecompressor(valDecompressor); + if (valDecompressor != null) { + // Make sure we only return valDecompressor once. + CodecPool.returnDecompressor(valDecompressor); + valDecompressor = null; + } } } @@ -1748,7 +1752,11 @@ public class RCFile { currentValue.close(); if (decompress) { IOUtils.closeStream(keyDecompressedData); - CodecPool.returnDecompressor(keyDecompressor); + if (keyDecompressor != null) { + // Make sure we only return keyDecompressor once. + CodecPool.returnDecompressor(keyDecompressor); + keyDecompressor = null; + } } } -- 1.8.0