@Override public Block promote(Block block) { synchronized (this) { checkUpdate(Promote); Long id = block.getId(); add(Promote, id); if (!activeWriteBlocks.contains(id) && !activeReadBlocks.contains(id)) error(Promote, id + " is not an active block"); if (activeReadBlocks.contains(id)) // Remove one read count // Really, do this if obtained via "getRead" and not "getWrite" activeReadBlocks.remove(id); // Double promotion results in only one entry. if (!activeWriteBlocks.contains(id)) activeWriteBlocks.add(id); } return blockMgr.promote(block); }