This is an automated email from the ASF dual-hosted git repository. boaz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/drill.git
The following commit(s) were added to refs/heads/master by this push: new d2645c7 DRILL-7170: Ignore uninitialized vector containers for OOM error messages d2645c7 is described below commit d2645c7638a88a4afd162bc3f1e2d65353ca3a67 Author: Ben-Zvi <bben-...@mapr.com> AuthorDate: Wed Sep 25 17:27:13 2019 -0700 DRILL-7170: Ignore uninitialized vector containers for OOM error messages --- .../apache/drill/exec/physical/impl/common/HashTableTemplate.java | 6 +++++- .../java/org/apache/drill/exec/physical/impl/spill/SpillSet.java | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java index d0789e8..b549a9e 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/common/HashTableTemplate.java @@ -459,7 +459,11 @@ public abstract class HashTableTemplate implements HashTable { size += ledger.getAccountedSize(); } - size += new RecordBatchSizer(htContainer).getActualSize(); + // In some rare cases (e.g., making a detailed debug msg after an OOM) the container + // was not initialized; ignore such cases + if ( htContainer.hasRecordCount() ) { + size += new RecordBatchSizer(htContainer).getActualSize(); + } return size; } } diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/spill/SpillSet.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/spill/SpillSet.java index 3a2e668..a06ce09 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/spill/SpillSet.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/spill/SpillSet.java @@ -324,8 +324,11 @@ public class SpillSet { @Override public void deleteDir(String fragmentSpillDir) throws IOException { - boolean deleted = new File(baseDir, fragmentSpillDir).delete(); - if ( ! deleted ) { throw new IOException("Failed to delete: " + fragmentSpillDir);} + File spillDir = new File(baseDir, fragmentSpillDir); + for (File spillFile : spillDir.listFiles()) { + spillFile.delete(); // IO exception if file delete fails + } + spillDir.delete();// IO exception if dir delete fails } @Override