public ComponentReplacementContext(ILSMIndex lsmIndex) { components = new ArrayList<>(lsmIndex.getNumberOfAllMemoryComponents()); replacedComponentIds = new ArrayList<>(lsmIndex.getNumberOfAllMemoryComponents()); swapIndexes = new int[lsmIndex.getNumberOfAllMemoryComponents()]; diskComponents = new ArrayList<>(lsmIndex.getNumberOfAllMemoryComponents()); }
public LSMIndexSearchCursor(ILSMIndexOperationContext opCtx, boolean returnDeletedTuples) { this.opCtx = opCtx; this.returnDeletedTuples = returnDeletedTuples; outputElement = null; needPushElementIntoQueue = false; switchComponentTupleBuilders = new ArrayTupleBuilder[opCtx.getIndex().getNumberOfAllMemoryComponents()]; switchRequest = new boolean[switchComponentTupleBuilders.length]; switchedElements = new PriorityQueueElement[switchComponentTupleBuilders.length]; }
@Test public void testAllocateComponentId() throws HyracksDataException { int numMemoryComponents = 2; DatasetInfo dsInfo = new DatasetInfo(101, null); ILSMComponentIdGenerator idGenerator = new LSMComponentIdGenerator(numMemoryComponents, MIN_VALID_COMPONENT_ID); ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class); Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(numMemoryComponents); ILSMMemoryComponent mockComponent = Mockito.mock(AbstractLSMMemoryComponent.class); Mockito.when(mockIndex.getCurrentMemoryComponent()).thenReturn(mockComponent); LSMIOOperationCallback callback = new LSMIOOperationCallback(dsInfo, mockIndex, idGenerator.getId(), mockIndexCheckpointManagerProvider()); ILSMComponentId initialId = idGenerator.getId(); // simulate a partition is flushed before allocated idGenerator.refresh(); long flushLsn = 1L; ILSMComponentId nextComponentId = idGenerator.getId(); callback.allocated(mockComponent); callback.recycled(mockComponent); checkMemoryComponent(initialId, mockComponent); }
public void register(LocalResource resource, ILSMIndex index) throws HyracksDataException { long resourceID = resource.getId(); if (!datasetInfo.isRegistered()) { synchronized (datasetInfo) { if (!datasetInfo.isRegistered()) { datasetInfo.setExternal(index.getNumberOfAllMemoryComponents() == 0); datasetInfo.setRegistered(true); datasetInfo.setDurable(index.isDurable()); } } } if (datasetInfo.getIndexes().containsKey(resourceID)) { throw new HyracksDataException("Index with resource ID " + resourceID + " already exists."); } if (index == null) { throw new HyracksDataException("Attempt to register a null index"); } datasetInfo.addIndex(resourceID, new IndexInfo(index, datasetInfo.getDatasetID(), resource, ((DatasetLocalResource) resource.getResource()).getPartition())); }
ILSMComponentIdGenerator idGenerator = new LSMComponentIdGenerator(numMemoryComponents, MIN_VALID_COMPONENT_ID); ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class); Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(numMemoryComponents); ILSMMemoryComponent mockComponent = Mockito.mock(AbstractLSMMemoryComponent.class); Mockito.when(mockIndex.getCurrentMemoryComponent()).thenReturn(mockComponent);
Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(numMemoryComponents); Mockito.when(mockIndex.getCurrentMemoryComponent()).thenReturn(Mockito.mock(AbstractLSMMemoryComponent.class)); DatasetInfo dsInfo = new DatasetInfo(101, null);
index.activate(); Assert.assertEquals(getExpectedMemoryComponentIndex(0), index.getCurrentMemoryComponentIndex()); int numMemoryComponents = index.getNumberOfAllMemoryComponents(); assertCorrectSearchComponents(opCtx, index, 0); for (int i = 0; i < numFlushes - index.getNumberOfAllMemoryComponents(); i++) { flushSemaphore.release(); firstUser.step();