This is an automated email from the ASF dual-hosted git repository. arina pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/drill.git
commit 91962d3dd38119ad04fa6b646a4980fd77e828d8 Author: Bohdan Kazydub <[email protected]> AuthorDate: Tue Oct 16 17:11:36 2018 +0300 DRILL-6793: FragmentExecutor cannot send its final state for the case when RootExec root wasn't initialized closes #1506 --- .../drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java | 2 +- .../apache/drill/exec/store/hive/readers/HiveAbstractReader.java | 2 +- .../main/java/org/apache/drill/exec/physical/impl/BaseRootExec.java | 4 ++++ .../java/org/apache/drill/exec/store/avro/AvroRecordReader.java | 6 ++++-- .../exec/store/easy/sequencefile/SequenceFileRecordReader.java | 2 +- .../java/org/apache/drill/exec/work/fragment/FragmentExecutor.java | 2 +- 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java index b68f574..628a986 100644 --- a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java +++ b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/db/json/MaprDBJsonRecordReader.java @@ -531,7 +531,7 @@ public class MaprDBJsonRecordReader extends AbstractRecordReader { @Override public String toString() { StringBuilder sb = new StringBuilder("MaprDBJsonRecordReader[Table=") - .append(table.getPath()); + .append(table != null ? table.getPath() : null); if (reader != null) { sb.append(", Document ID=") .append(IdCodec.asString(reader.getId())); diff --git a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/readers/HiveAbstractReader.java b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/readers/HiveAbstractReader.java index 5ed6c3b..cc774d9 100644 --- a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/readers/HiveAbstractReader.java +++ b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/readers/HiveAbstractReader.java @@ -429,7 +429,7 @@ public abstract class HiveAbstractReader extends AbstractRecordReader { position = reader.getPos(); } } catch (IOException e) { - logger.trace("Unable to obtain reader position: " + e.getMessage()); + logger.trace("Unable to obtain reader position.", e); } return getClass().getSimpleName() + "[Database=" + table.getDbName() + ", Table=" + table.getTableName() diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/BaseRootExec.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/BaseRootExec.java index 9142a2a..95a1235 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/BaseRootExec.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/BaseRootExec.java @@ -126,6 +126,10 @@ public abstract class BaseRootExec implements RootExec { @Override public void dumpBatches() { + if (operators == null) { + return; + } + final int numberOfBatchesToDump = 2; logger.error("Batch dump started: dumping last {} failed batches", numberOfBatchesToDump); // As batches are stored in a 'flat' List there is a need to filter out the failed batch diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java index 7668130..1d7226a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/avro/AvroRecordReader.java @@ -403,9 +403,11 @@ public class AvroRecordReader extends AbstractRecordReader { public String toString() { long currentPosition = -1L; try { - currentPosition = reader.tell(); + if (reader != null) { + currentPosition = reader.tell(); + } } catch (IOException e) { - logger.trace("Unable to obtain reader position: " + e.getMessage()); + logger.trace("Unable to obtain reader position.", e); } return "AvroRecordReader[File=" + hadoop + ", Position=" + currentPosition diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/sequencefile/SequenceFileRecordReader.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/sequencefile/SequenceFileRecordReader.java index 549df82..7f9b993 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/sequencefile/SequenceFileRecordReader.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/easy/sequencefile/SequenceFileRecordReader.java @@ -172,7 +172,7 @@ public class SequenceFileRecordReader extends AbstractRecordReader { position = reader.getPos(); } } catch (IOException e) { - logger.trace("Unable to obtain reader position: " + e.getMessage()); + logger.trace("Unable to obtain reader position.", e); } return "SequenceFileRecordReader[File=" + split.getPath() + ", Position=" + position diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/FragmentExecutor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/FragmentExecutor.java index a9e9e62..e374c01 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/FragmentExecutor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/work/fragment/FragmentExecutor.java @@ -207,7 +207,7 @@ public class FragmentExecutor implements Runnable { } private void cleanup(FragmentState state) { - if (fragmentState.get() == FragmentState.FAILED) { + if (root != null && fragmentState.get() == FragmentState.FAILED) { root.dumpBatches(); }
