@Override public synchronized void endRead() { synchronized (this) { if (inRead == 0) error(EndRead, "endRead but not in read"); if (inUpdate) error(EndRead, "endRead when in update"); checkEmpty("Outstanding write blocks at end of read operations!", activeWriteBlocks); if (inRead == 0) { // Check at end of multiple reads or a write checkEmpty("Outstanding read blocks at end of read operations", activeReadBlocks); clearInternalRW(); } inUpdate = false; inRead--; } blockMgr.endRead(); }