@Override public void returnData(OrcEncodedColumnBatch ecb) { for (ColumnStreamData[] datas : ecb.getColumnData()) { if (datas == null) continue; for (ColumnStreamData data : datas) { if (data == null || data.decRef() != 0) continue; if (DebugUtils.isTraceLockingEnabled()) { for (MemoryBuffer buf : data.getCacheBuffers()) { LlapIoImpl.LOG.info("Unlocking " + buf + " at the end of processing"); } } lowLevelCache.releaseBuffers(data.getCacheBuffers()); CSD_POOL.offer(data); } } // We can offer ECB even with some streams not discarded; reset() will clear the arrays. ECB_POOL.offer(ecb); }
@Override public void resetBeforeOffer(ColumnStreamData t) { t.reset(); }