@Override public void close() { try { if (batchGroups != null) { closeBatchGroups(batchGroups); batchGroups = null; } if (spilledBatchGroups != null) { closeBatchGroups(spilledBatchGroups); spilledBatchGroups = null; } } finally { if (builder != null) { builder.clear(); builder.close(); } if (sv4 != null) { sv4.clear(); } try { if (copier != null) { copier.close(); } } catch (IOException e) { throw new RuntimeException(e); } finally { copierAllocator.close(); super.close(); if (mSorter != null) { mSorter.clear(); } for (Iterator iter = this.currSpillDirs.iterator(); iter.hasNext(); iter.remove()) { Path path = (Path) iter.next(); try { if (fs != null && path != null && fs.exists(path)) { if (fs.delete(path, true)) { fs.cancelDeleteOnExit(path); } } } catch (IOException e) { // since this is meant to be used in a batches's cleanup, we don't propagate the // exception logger.warn("Unable to delete spill directory " + path, e); } } } } }
@Override public void close() { super.close(); }