This is an automated email from the ASF dual-hosted git repository.
abstractdog pushed a commit to branch branch-0.9
in repository https://gitbox.apache.org/repos/asf/tez.git
The following commit(s) were added to refs/heads/branch-0.9 by this push:
new 97a2e0c TEZ-4238: Check null mrReader in MRInput.close (László Bodor
reviewed by Hadoop QA, Jonathan Turner Eagles, Hadoop QA)
97a2e0c is described below
commit 97a2e0c7742ede9e91d85b872a7193fc68282b59
Author: László Bodor <[email protected]>
AuthorDate: Tue Oct 6 12:00:17 2020 +0200
TEZ-4238: Check null mrReader in MRInput.close (László Bodor reviewed by
Hadoop QA, Jonathan Turner Eagles, Hadoop QA)
Signed-off-by: Laszlo Bodor <[email protected]>
---
.../org/apache/tez/mapreduce/input/MRInput.java | 5 ++++-
.../apache/tez/mapreduce/input/TestMRInput.java | 22 ++++++++++++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git
a/tez-mapreduce/src/main/java/org/apache/tez/mapreduce/input/MRInput.java
b/tez-mapreduce/src/main/java/org/apache/tez/mapreduce/input/MRInput.java
index 5c8ad4e..891249b 100644
--- a/tez-mapreduce/src/main/java/org/apache/tez/mapreduce/input/MRInput.java
+++ b/tez-mapreduce/src/main/java/org/apache/tez/mapreduce/input/MRInput.java
@@ -592,7 +592,10 @@ public class MRInput extends MRInputBase {
@Override
public List<Event> close() throws IOException {
- mrReader.close();
+ if (mrReader != null) {
+ mrReader.close();
+ mrReader = null;
+ }
long inputRecords = getContext().getCounters()
.findCounter(TaskCounter.INPUT_RECORDS_PROCESSED).getValue();
getContext().getStatisticsReporter().reportItemsProcessed(inputRecords);
diff --git
a/tez-mapreduce/src/test/java/org/apache/tez/mapreduce/input/TestMRInput.java
b/tez-mapreduce/src/test/java/org/apache/tez/mapreduce/input/TestMRInput.java
index 9109cd9..9249d3b 100644
---
a/tez-mapreduce/src/test/java/org/apache/tez/mapreduce/input/TestMRInput.java
+++
b/tez-mapreduce/src/test/java/org/apache/tez/mapreduce/input/TestMRInput.java
@@ -47,6 +47,7 @@ import org.apache.tez.mapreduce.hadoop.MRInputHelpers;
import org.apache.tez.mapreduce.protos.MRRuntimeProtos;
import org.apache.tez.runtime.api.Event;
import org.apache.tez.runtime.api.InputContext;
+import org.apache.tez.runtime.api.InputStatisticsReporter;
import org.apache.tez.runtime.api.events.InputDataInformationEvent;
import org.junit.Test;
@@ -147,6 +148,16 @@ public class TestMRInput {
assertTrue(TestInputFormat.invoked.get());
}
+ @Test
+ public void testMRInputCloseWithUnintializedReader() throws IOException {
+ InputContext inputContext = mock(InputContext.class);
+ doReturn(new TezCounters()).when(inputContext).getCounters();
+ doReturn(new
InputStatisticsReporterImplForTest()).when(inputContext).getStatisticsReporter();
+
+ MRInput mrInput = new MRInput(inputContext, 0);
+ mrInput.close(); // shouldn't throw NPE
+ }
+
/**
* Test class to verify
*/
@@ -237,4 +248,15 @@ public class TestMRInput {
}
}
+
+ public static class InputStatisticsReporterImplForTest implements
InputStatisticsReporter {
+
+ @Override
+ public synchronized void reportDataSize(long size) {
+ }
+
+ @Override
+ public void reportItemsProcessed(long items) {
+ }
+ }
}