@Override public void release(Block block) { synchronized (this) { checkReadOrIter(Release); Long id = block.getId(); add(Release, id); if (!activeReadBlocks.contains(id) && !activeIterBlocks.contains(id) && !activeWriteBlocks.contains(id)) error(Release, id + " is not an active block"); // May have been promoted. if (activeWriteBlocks.contains(id)) activeWriteBlocks.remove(id); else activeReadBlocks.remove(block.getId()); activeIterBlocks.remove(block.getId()); } blockMgr.release(block); }