@Override public void resetCurrentComponentIndex() { synchronized (lsmHarness.getOperationTracker()) { // validate no reader in any of the memory components and that all of them are INVALID for (ILSMMemoryComponent c : memoryComponents) { if (c.getReaderCount() > 0) { throw new IllegalStateException( "Attempt to reset current component index while readers are inside the components. " + c); } if (c.getState() != ComponentState.INACTIVE) { throw new IllegalStateException( "Attempt to reset current component index while a component is not INACTIVE. " + c); } } currentMutableComponentId.set(0); memoryComponents.get(0); try { memoryComponents.get(0).resetId(null, true); } catch (HyracksDataException e) { throw new IllegalStateException(e); } } }
@Override public boolean isCurrentMutableComponentEmpty() throws HyracksDataException { synchronized (getOperationTracker()) { ILSMMemoryComponent cmc = getCurrentMemoryComponent(); ComponentState state = cmc.getState(); return state == ComponentState.READABLE_UNWRITABLE_FLUSHING || state == ComponentState.INACTIVE || state == ComponentState.UNREADABLE_UNWRITABLE || !cmc.isModified(); } }
private boolean flushingOrMerging() { // check if flushes are taking place for (ILSMMemoryComponent memComponent : lsmIndex.getMemoryComponents()) { if (memComponent.getState() == ComponentState.READABLE_UNWRITABLE_FLUSHING) { return true; } } // check if merges are taking place for (ILSMDiskComponent diskComponent : lsmIndex.getDiskComponents()) { if (diskComponent.getState() == ComponentState.READABLE_MERGING) { return true; } } return false; }
+ " Component:" + memComponent); if (memComponent.getState() == ComponentState.READABLE_WRITABLE && memComponent.isModified()) { memComponent.setUnwritable();