TEZ-2907. NPE in IFile.Reader.getLength during final merge operation (rbalamohan)
(cherry picked from commit f3cea630e8329018a1e600859353576cb83cf77d)
# Conflicts:
# CHANGES.txt
diff --git a/CHANGES.txt b/CHANGES.txt
index 0356b75..a91aa7f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -6,6 +6,7 @@
INCOMPATIBLE CHANGES
ALL CHANGES:
+ TEZ-2907. NPE in IFile.Reader.getLength during final merge operation
TEZ-2850. Tez MergeManager OOM for small Map Outputs
TEZ-2781. Fallback to send only TaskAttemptFailedEvent if taskFailed heartbeat fails
TEZ-2855. Fix a potential NPE while routing VertexManager events.
diff --git a/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/common/shuffle/orderedgrouped/MergeManager.java b/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/common/shuffle/orderedgrouped/MergeManager.java
index efecb8a..f498787 100644
--- a/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/common/shuffle/orderedgrouped/MergeManager.java
+++ b/tez-runtime-library/src/main/java/org/apache/tez/runtime/library/common/shuffle/orderedgrouped/MergeManager.java
@@ -812,12 +812,14 @@
class RawKVIteratorReader extends IFile.Reader {
private final TezRawKeyValueIterator kvIter;
+ private final long size;
public RawKVIteratorReader(TezRawKeyValueIterator kvIter, long size)
throws IOException {
super(null, size, null, spilledRecordsCounter, null, ifileReadAhead,
ifileReadAheadLength, ifileBufferSize);
this.kvIter = kvIter;
+ this.size = size;
}
@Override
public KeyState readRawKey(DataInputBuffer key) throws IOException {
@@ -845,6 +847,10 @@
public void close() throws IOException {
kvIter.close();
}
+
+ @Override public long getLength() {
+ return size;
+ }
}
private TezRawKeyValueIterator finalMerge(Configuration job, FileSystem fs,