Repository: hive
Updated Branches:
  refs/heads/master b67d52c29 -> 77c28af60


HIVE-17411 : LLAP IO may incorrectly release a refcount in some rare cases 
(Sergey Shelukhin, reviewed by Prasanth Jayachandran)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/77c28af6
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/77c28af6
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/77c28af6

Branch: refs/heads/master
Commit: 77c28af605f6c3f3866ca9faf5f70a46ba41e37a
Parents: b67d52c
Author: sergey <[email protected]>
Authored: Wed Aug 30 10:33:46 2017 -0700
Committer: sergey <[email protected]>
Committed: Wed Aug 30 10:33:46 2017 -0700

----------------------------------------------------------------------
 .../hadoop/hive/ql/io/orc/encoded/EncodedReaderImpl.java      | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/77c28af6/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedReaderImpl.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedReaderImpl.java 
b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedReaderImpl.java
index 3f5f99c..690cce7 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedReaderImpl.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/encoded/EncodedReaderImpl.java
@@ -1211,8 +1211,11 @@ class EncodedReaderImpl implements EncodedReader {
     // as long as they are still in the same stream and are not already 
released.
     DiskRangeList prev = cc.prev;
     while (true) {
-      if ((prev == null) || (prev.getEnd() <= streamStartOffset)
-          || !(prev instanceof CacheChunk)) break;
+      // Do not release beyond current stream (we don't know which RGs that 
buffer is for).
+      if ((prev == null) || (prev.getEnd() <= streamStartOffset)) break;
+      // Only release cache chunks; do not release ProcCacheChunks - they may 
not yet have data.
+      if (prev.getClass() != CacheChunk.class) break;
+
       CacheChunk prevCc = (CacheChunk)prev;
       if (prevCc.buffer == null) break;
       try {

Reply via email to