public long getComponentLSN(List<ILSMDiskComponent> diskComponents) throws HyracksDataException { if (diskComponents.isEmpty()) { throw new IllegalArgumentException("Can't get LSN from an empty list of disk components"); } // Get max LSN from the diskComponents. Implies a merge IO operation or Recovery operation. long maxLSN = -1L; for (ILSMDiskComponent c : diskComponents) { DiskComponentMetadata md = c.getMetadata(); maxLSN = Math.max(getTreeIndexLSN(md), maxLSN); } return maxLSN; }
flushingComponent.getMetadata().copy(component.getMetadata()); abort = false; componentBulkLoader.end();
private void putComponentIdIntoMetadata(ILSMDiskComponent newComponent, ILSMComponentId componentId) throws HyracksDataException { LSMComponentIdUtils.persist(componentId, newComponent.getMetadata()); }
flushingComponent.getMetadata().copy(component.getMetadata());
private long lsnFromDiskComponents() { List<ILSMDiskComponent> diskComponents = index.getDiskComponents(); for (ILSMDiskComponent c : diskComponents) { try { long lsn = ComponentUtils.getLong(c.getMetadata(), ComponentUtils.MARKER_LSN_KEY, ComponentUtils.NOT_FOUND, buffer); if (lsn != ComponentUtils.NOT_FOUND) { return lsn; } } catch (HyracksDataException e) { throw new IllegalStateException("Unable to read metadata page. Disk Error?", e); } } return ComponentUtils.NOT_FOUND; }
filterManager.writeFilter(component.getLSMComponentFilter(), component.getMetadataHolder()); flushingComponent.getMetadata().copy(component.getMetadata()); componentBulkLoader.end(); return component;
private void putLSNIntoMetadata(ILSMDiskComponent newComponent, long lsn) throws HyracksDataException { newComponent.getMetadata().put(KEY_METADATA_FLUSH_LOG_LSN, LongPointable.FACTORY.createPointable(lsn)); }
getFilterManager().writeFilter(component.getLSMComponentFilter(), component.getMetadataHolder()); flushingComponent.getMetadata().copy(component.getMetadata()); abort = false; componentBulkLoader.end();
private ILSMDiskComponent mockDiskComponent() { ILSMDiskComponent component = Mockito.mock(ILSMDiskComponent.class); Mockito.when(component.getMetadata()).thenReturn(Mockito.mock(DiskComponentMetadata.class)); return component; }
private static void fromDiskComponents(ILSMIndex index, IValueReference key, ArrayBackedValueStorage value) throws HyracksDataException { boolean loggable = LOGGER.isDebugEnabled(); if (loggable) { LOGGER.log(Level.DEBUG, "Getting " + key + " from disk components of " + index); } for (ILSMDiskComponent c : index.getDiskComponents()) { if (loggable) { LOGGER.log(Level.DEBUG, "Getting " + key + " from disk components " + c); } c.getMetadata().get(key, value); if (value.getLength() != 0) { // Found return; } } }
@Override public boolean test(ILSMComponent c) { try { return c instanceof ILSMMemoryComponent || (c instanceof ILSMDiskComponent && LSMIOOperationCallback.getTreeIndexLSN(((ILSMDiskComponent) c).getMetadata()) >= lsn); } catch (HyracksDataException e) { e.printStackTrace(); return false; } } }
@Override public void afterOperation(ILSMIOOperation operation) throws HyracksDataException { if (operation.getStatus() == LSMIOOperationStatus.FAILURE) { return; } if (operation.getIOOpertionType() == LSMIOOperationType.LOAD) { Map<String, Object> map = operation.getParameters(); putComponentIdIntoMetadata(operation.getNewComponent(), (LSMComponentId) map.get(KEY_FLUSHED_COMPONENT_ID)); } else if (operation.getIOOpertionType() == LSMIOOperationType.FLUSH) { Map<String, Object> map = operation.getParameters(); putLSNIntoMetadata(operation.getNewComponent(), (Long) map.get(KEY_FLUSH_LOG_LSN)); putComponentIdIntoMetadata(operation.getNewComponent(), ((FlushOperation) operation).getFlushingComponent().getId()); } else if (operation.getIOOpertionType() == LSMIOOperationType.MERGE) { List<ILSMDiskComponent> mergedComponents = operation.getAccessor().getOpContext().getComponentsToBeMerged(); putLSNIntoMetadata(operation.getNewComponent(), mergedComponents); putComponentIdIntoMetadata(operation.getNewComponent(), mergedComponents); LongPointable markerLsn = LongPointable.FACTORY.createPointable(ComponentUtils.getLong(mergedComponents.get(0).getMetadata(), ComponentUtils.MARKER_LSN_KEY, ComponentUtils.NOT_FOUND, buffer)); operation.getNewComponent().getMetadata().put(ComponentUtils.MARKER_LSN_KEY, markerLsn); } }
long lsn = LSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); for (int i = 0; i < numMergedComponents; i++) { mergedComponents.add(diskComponents.get(i));
long lsn = LSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); dsLifecycleMgr.getComponentIdGenerator(StorageTestUtils.DATASET_ID, PARTITION, indexPath).refresh(); next = dsLifecycleMgr.getComponentIdGenerator(StorageTestUtils.DATASET_ID, PARTITION, indexPath).getId();
long lsn = LSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); for (int i = 0; i < numMergedComponents; i++) { mergedComponents.add(diskComponents.get(i));
long lsn = LSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); int numMergedComponents = 3; for (int i = 0; i < numMergedComponents; i++) {
long lsn = LSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); dsLifecycleMgr.getComponentIdGenerator(StorageTestUtils.DATASET_ID, PARTITION, indexPath).refresh(); next = dsLifecycleMgr.getComponentIdGenerator(StorageTestUtils.DATASET_ID, PARTITION, indexPath).getId();
long lsn = LSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); dsLifecycleMgr.getComponentIdGenerator(StorageTestUtils.DATASET_ID, PARTITION, indexPath).refresh(); next = dsLifecycleMgr.getComponentIdGenerator(StorageTestUtils.DATASET_ID, PARTITION, indexPath).getId();