http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java index ec8a857..02a4221 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java @@ -42,7 +42,6 @@ import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexFileManager; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMMemoryComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy; import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker; import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache; @@ -66,10 +65,6 @@ public abstract class AbstractLSMRTree extends AbstractLSMIndex implements ITree protected final IBinaryComparatorFactory[] linearizerArray; protected final boolean isPointMBR; - // On-disk components. - // For creating RTree's used in flush and merge. - protected final ILSMDiskComponentFactory componentFactory; - protected IBinaryComparatorFactory[] btreeCmpFactories; protected IBinaryComparatorFactory[] rtreeCmpFactories; @@ -82,17 +77,18 @@ public abstract class AbstractLSMRTree extends AbstractLSMIndex implements ITree public AbstractLSMRTree(IIOManager ioManager, List<IVirtualBufferCache> virtualBufferCaches, RTreeFrameFactory rtreeInteriorFrameFactory, RTreeFrameFactory rtreeLeafFrameFactory, ITreeIndexFrameFactory btreeInteriorFrameFactory, ITreeIndexFrameFactory btreeLeafFrameFactory, - ILSMIndexFileManager fileManager, ILSMDiskComponentFactory componentFactory, int fieldCount, + IBufferCache diskBufferCache, ILSMIndexFileManager fileManager, ILSMDiskComponentFactory componentFactory, + ILSMDiskComponentFactory bulkLoadComponentFactory, int fieldCount, IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories, ILinearizeComparatorFactory linearizer, int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, IComponentFilterHelper filterHelper, ILSMComponentFilterFrameFactory filterFrameFactory, LSMComponentFilterManager filterManager, int[] rtreeFields, int[] filterFields, boolean durable, - boolean isPointMBR, IBufferCache diskBufferCache) throws HyracksDataException { + boolean isPointMBR) throws HyracksDataException { super(ioManager, virtualBufferCaches, diskBufferCache, fileManager, bloomFilterFalsePositiveRate, mergePolicy, - opTracker, ioScheduler, ioOpCallback, filterFrameFactory, filterManager, filterFields, durable, - filterHelper, rtreeFields, ITracer.NONE); + opTracker, ioScheduler, ioOpCallback, componentFactory, bulkLoadComponentFactory, filterFrameFactory, + filterManager, filterFields, durable, filterHelper, rtreeFields, ITracer.NONE); int i = 0; for (IVirtualBufferCache virtualBufferCache : virtualBufferCaches) { RTree memRTree = new RTree(virtualBufferCache, new VirtualFreePageManager(virtualBufferCache), @@ -112,7 +108,6 @@ public abstract class AbstractLSMRTree extends AbstractLSMIndex implements ITree this.rtreeLeafFrameFactory = rtreeLeafFrameFactory; this.btreeInteriorFrameFactory = btreeInteriorFrameFactory; this.btreeLeafFrameFactory = btreeLeafFrameFactory; - this.componentFactory = componentFactory; this.btreeCmpFactories = btreeCmpFactories; this.rtreeCmpFactories = rtreeCmpFactories; this.linearizer = linearizer; @@ -126,19 +121,19 @@ public abstract class AbstractLSMRTree extends AbstractLSMIndex implements ITree */ public AbstractLSMRTree(IIOManager ioManager, ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory rtreeLeafFrameFactory, ITreeIndexFrameFactory btreeInteriorFrameFactory, - ITreeIndexFrameFactory btreeLeafFrameFactory, ILSMIndexFileManager fileManager, - ILSMDiskComponentFactory componentFactory, IBinaryComparatorFactory[] rtreeCmpFactories, - IBinaryComparatorFactory[] btreeCmpFactories, ILinearizeComparatorFactory linearizer, - int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, double bloomFilterFalsePositiveRate, - ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, - ILSMIOOperationCallback ioOpCallback, boolean durable, boolean isPointMBR, IBufferCache diskBufferCache) { + ITreeIndexFrameFactory btreeLeafFrameFactory, IBufferCache diskBufferCache, + ILSMIndexFileManager fileManager, ILSMDiskComponentFactory componentFactory, + IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories, + ILinearizeComparatorFactory linearizer, int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, + double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, + ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, boolean durable, + boolean isPointMBR) { super(ioManager, diskBufferCache, fileManager, bloomFilterFalsePositiveRate, mergePolicy, opTracker, - ioScheduler, ioOpCallback, durable); + ioScheduler, ioOpCallback, componentFactory, componentFactory, durable); this.rtreeInteriorFrameFactory = rtreeInteriorFrameFactory; this.rtreeLeafFrameFactory = rtreeLeafFrameFactory; this.btreeInteriorFrameFactory = btreeInteriorFrameFactory; this.btreeLeafFrameFactory = btreeLeafFrameFactory; - this.componentFactory = componentFactory; this.btreeCmpFactories = btreeCmpFactories; this.rtreeCmpFactories = rtreeCmpFactories; this.linearizer = linearizer; @@ -154,71 +149,46 @@ public abstract class AbstractLSMRTree extends AbstractLSMIndex implements ITree cursor.open(ctx.getSearchInitialState(), pred); } - protected LSMRTreeDiskComponent createDiskComponent(ILSMDiskComponentFactory factory, FileReference insertFileRef, - FileReference deleteFileRef, FileReference bloomFilterFileRef, boolean createComponent) - throws HyracksDataException { - // Create new tree instance. - LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) factory - .createComponent(new LSMComponentFileReferences(insertFileRef, deleteFileRef, bloomFilterFileRef)); - // Tree will be closed during cleanup of merge(). - if (createComponent) { - component.getRTree().create(); - } - component.getRTree().activate(); - if (component.getBTree() != null) { - if (createComponent) { - component.getBTree().create(); - component.getBloomFilter().create(); - } - component.getBTree().activate(); - component.getBloomFilter().activate(); - } - if (component.getLSMComponentFilter() != null && !createComponent) { - getFilterManager().readFilter(component.getLSMComponentFilter(), component.getRTree()); - } - return component; - } - @Override public ITreeIndexFrameFactory getLeafFrameFactory() { LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) memoryComponents.get(currentMutableComponentId.get()); - return mutableComponent.getRTree().getLeafFrameFactory(); + return mutableComponent.getIndex().getLeafFrameFactory(); } @Override public ITreeIndexFrameFactory getInteriorFrameFactory() { LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) memoryComponents.get(currentMutableComponentId.get()); - return mutableComponent.getRTree().getInteriorFrameFactory(); + return mutableComponent.getIndex().getInteriorFrameFactory(); } @Override public IPageManager getPageManager() { LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) memoryComponents.get(currentMutableComponentId.get()); - return mutableComponent.getRTree().getPageManager(); + return mutableComponent.getIndex().getPageManager(); } @Override public int getFieldCount() { LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) memoryComponents.get(currentMutableComponentId.get()); - return mutableComponent.getRTree().getFieldCount(); + return mutableComponent.getIndex().getFieldCount(); } @Override public int getRootPageId() { LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) memoryComponents.get(currentMutableComponentId.get()); - return mutableComponent.getRTree().getRootPageId(); + return mutableComponent.getIndex().getRootPageId(); } @Override public int getFileId() { LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) memoryComponents.get(currentMutableComponentId.get()); - return mutableComponent.getRTree().getFileId(); + return mutableComponent.getIndex().getFileId(); } @Override @@ -272,60 +242,15 @@ public abstract class AbstractLSMRTree extends AbstractLSMIndex implements ITree } @Override - protected void validateMemoryComponent(ILSMMemoryComponent c) throws HyracksDataException { - throw new UnsupportedOperationException("Validation not implemented for LSM R-Trees."); - } - - @Override - protected void validateDiskComponent(ILSMDiskComponent c) throws HyracksDataException { - throw new UnsupportedOperationException("Validation not implemented for LSM R-Trees."); - } - - @Override - protected long getMemoryComponentSize(ILSMMemoryComponent c) { - LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c; - IBufferCache virtualBufferCache = mutableComponent.getRTree().getBufferCache(); - return virtualBufferCache.getNumPages() * (long) virtualBufferCache.getPageSize(); - } - - @Override public boolean isPrimaryIndex() { return false; } @Override - protected void allocateMemoryComponent(ILSMMemoryComponent c) throws HyracksDataException { - LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c; - ((IVirtualBufferCache) mutableComponent.getRTree().getBufferCache()).open(); - mutableComponent.getRTree().create(); - mutableComponent.getBTree().create(); - mutableComponent.getRTree().activate(); - mutableComponent.getBTree().activate(); - } - - @Override - protected void deactivateMemoryComponent(ILSMMemoryComponent c) throws HyracksDataException { - LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c; - mutableComponent.getRTree().deactivate(); - mutableComponent.getBTree().deactivate(); - mutableComponent.getRTree().destroy(); - mutableComponent.getBTree().destroy(); - ((IVirtualBufferCache) mutableComponent.getRTree().getBufferCache()).close(); - } - - @Override - protected void clearMemoryComponent(ILSMMemoryComponent c) throws HyracksDataException { - LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) c; - mutableComponent.getRTree().clear(); - mutableComponent.getBTree().clear(); - mutableComponent.reset(); - } - - @Override protected LSMComponentFileReferences getMergeFileReferences(ILSMDiskComponent firstComponent, ILSMDiskComponent lastComponent) throws HyracksDataException { - RTree firstTree = ((LSMRTreeDiskComponent) firstComponent).getRTree(); - RTree lastTree = ((LSMRTreeDiskComponent) lastComponent).getRTree(); + RTree firstTree = (RTree) firstComponent.getIndex(); + RTree lastTree = (RTree) lastComponent.getIndex(); FileReference firstFile = firstTree.getFileReference(); FileReference lastFile = lastTree.getFileReference(); return fileManager.getRelMergeFileReference(firstFile.getFile().getName(), lastFile.getFile().getName());
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java index 6595403..228f359 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java @@ -28,8 +28,6 @@ import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.io.IIOManager; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.storage.am.bloomfilter.impls.BloomCalculations; -import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilter; -import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterFactory; import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterSpecification; import org.apache.hyracks.storage.am.btree.impls.BTree; import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeBulkLoader; @@ -41,6 +39,7 @@ import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; +import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentFactory; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperation; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler; @@ -54,14 +53,13 @@ import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType; import org.apache.hyracks.storage.am.lsm.common.impls.BlockingIOOperationCallbackWrapper; import org.apache.hyracks.storage.am.lsm.common.impls.ExternalIndexHarness; import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences; -import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory; -import org.apache.hyracks.storage.am.rtree.impls.RTree; import org.apache.hyracks.storage.am.rtree.impls.SearchPredicate; import org.apache.hyracks.storage.common.IIndexBulkLoader; import org.apache.hyracks.storage.common.IIndexCursor; import org.apache.hyracks.storage.common.IModificationOperationCallback; import org.apache.hyracks.storage.common.ISearchOperationCallback; import org.apache.hyracks.storage.common.ISearchPredicate; +import org.apache.hyracks.storage.common.buffercache.IBufferCache; /** * This is an lsm r-tree that does not have memory component and is modified @@ -83,18 +81,17 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { public ExternalRTree(IIOManager ioManager, ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory rtreeLeafFrameFactory, ITreeIndexFrameFactory btreeInteriorFrameFactory, - ITreeIndexFrameFactory btreeLeafFrameFactory, ILSMIndexFileManager fileNameManager, - TreeIndexFactory<RTree> diskRTreeFactory, TreeIndexFactory<BTree> diskBTreeFactory, - BloomFilterFactory bloomFilterFactory, double bloomFilterFalsePositiveRate, int fieldCount, - IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories, - ILinearizeComparatorFactory linearizer, int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, - ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, - ILSMIOOperationCallback ioOpCallback, int[] buddyBTreeFields, boolean durable, boolean isPointMBR) { + ITreeIndexFrameFactory btreeLeafFrameFactory, IBufferCache diskBufferCache, + ILSMIndexFileManager fileNameManager, ILSMDiskComponentFactory componentFactory, + double bloomFilterFalsePositiveRate, int fieldCount, IBinaryComparatorFactory[] rtreeCmpFactories, + IBinaryComparatorFactory[] btreeCmpFactories, ILinearizeComparatorFactory linearizer, + int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, ILSMMergePolicy mergePolicy, + ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, + int[] buddyBTreeFields, boolean durable, boolean isPointMBR) { super(ioManager, rtreeInteriorFrameFactory, rtreeLeafFrameFactory, btreeInteriorFrameFactory, - btreeLeafFrameFactory, fileNameManager, diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, - bloomFilterFalsePositiveRate, rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields, - linearizerArray, mergePolicy, opTracker, ioScheduler, ioOpCallback, buddyBTreeFields, durable, - isPointMBR); + btreeLeafFrameFactory, diskBufferCache, fileNameManager, componentFactory, bloomFilterFalsePositiveRate, + rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields, linearizerArray, mergePolicy, + opTracker, ioScheduler, ioOpCallback, buddyBTreeFields, durable, isPointMBR); this.secondDiskComponents = new LinkedList<>(); this.fieldCount = fieldCount; } @@ -200,7 +197,7 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { List<LSMComponentFileReferences> validFileReferences; validFileReferences = fileManager.cleanupAndGetValidFiles(); for (LSMComponentFileReferences lsmComonentFileReference : validFileReferences) { - LSMRTreeDiskComponent component; + ILSMDiskComponent component; component = createDiskComponent(componentFactory, lsmComonentFileReference.getInsertIndexFileReference(), lsmComonentFileReference.getDeleteIndexFileReference(), @@ -214,23 +211,13 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { // components. It should also maintain the version pointer for (ILSMComponent c : diskComponents) { LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) c; - RTree rtree = component.getRTree(); - BTree btree = component.getBTree(); - BloomFilter bloomFilter = component.getBloomFilter(); - rtree.activate(); - btree.activate(); - bloomFilter.activate(); + component.activate(false); } for (ILSMComponent c : secondDiskComponents) { // Only activate non shared components if (!diskComponents.contains(c)) { LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) c; - RTree rtree = component.getRTree(); - BTree btree = component.getBTree(); - BloomFilter bloomFilter = component.getBloomFilter(); - rtree.activate(); - btree.activate(); - bloomFilter.activate(); + component.activate(false); } } } @@ -265,8 +252,8 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { ILSMIndexOperationContext opCtx = ((LSMRTreeSortedCursor) cursor).getOpCtx(); search(opCtx, cursor, rtreeSearchPred); - LSMRTreeDiskComponent mergedComponent = createDiskComponent(componentFactory, mergeOp.getTarget(), - mergeOp.getBTreeTarget(), mergeOp.getBloomFilterTarget(), true); + LSMRTreeDiskComponent mergedComponent = (LSMRTreeDiskComponent) createDiskComponent(componentFactory, + mergeOp.getTarget(), mergeOp.getBTreeTarget(), mergeOp.getBloomFilterTarget(), true); // In case we must keep the deleted-keys BTrees, then they must be // merged *before* merging the r-trees so that @@ -288,7 +275,7 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { LSMRTreeDeletedKeysBTreeMergeCursor btreeCursor = new LSMRTreeDeletedKeysBTreeMergeCursor(opCtx); search(opCtx, btreeCursor, rtreeSearchPred); - BTree btree = mergedComponent.getBTree(); + BTree btree = mergedComponent.getBuddyIndex(); IIndexBulkLoader btreeBulkLoader = btree.createBulkLoader(1.0f, true, 0L, false); long numElements = 0L; @@ -317,7 +304,7 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { btreeBulkLoader.end(); } - IIndexBulkLoader bulkLoader = mergedComponent.getRTree().createBulkLoader(1.0f, false, 0L, false); + IIndexBulkLoader bulkLoader = mergedComponent.getIndex().createBulkLoader(1.0f, false, 0L, false); try { while (cursor.hasNext()) { cursor.next(); @@ -343,11 +330,11 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { } for (ILSMDiskComponent c : diskComponents) { - deactivateDiskComponent(c); + c.deactivateAndPurge(); } for (ILSMDiskComponent c : secondDiskComponents) { if (!diskComponents.contains(c)) { - deactivateDiskComponent(c); + c.deactivateAndPurge(); } } isActive = false; @@ -362,26 +349,14 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { } getLsmHarness().indexClear(); - for (ILSMComponent c : diskComponents) { - LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) c; - component.getRTree().deactivate(); - component.getBloomFilter().deactivate(); - component.getBTree().deactivate(); - component.getRTree().destroy(); - component.getBloomFilter().destroy(); - component.getBTree().destroy(); + for (ILSMDiskComponent c : diskComponents) { + c.deactivateAndDestroy(); // Remove from second list to avoid destroying twice secondDiskComponents.remove(c); } - for (ILSMComponent c : secondDiskComponents) { - LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) c; - component.getRTree().deactivate(); - component.getBloomFilter().deactivate(); - component.getBTree().deactivate(); - component.getRTree().destroy(); - component.getBloomFilter().destroy(); - component.getBTree().destroy(); + for (ILSMDiskComponent c : secondDiskComponents) { + c.deactivateAndDestroy(); } diskComponents.clear(); @@ -395,12 +370,12 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { throw new HyracksDataException("Failed to destroy the index since it is activated."); } for (ILSMDiskComponent c : diskComponents) { - destroyDiskComponent(c); + c.destroy(); // Remove from second list to avoid destroying twice secondDiskComponents.remove(c); } for (ILSMDiskComponent c : secondDiskComponents) { - destroyDiskComponent(c); + c.destroy(); } diskComponents.clear(); secondDiskComponents.clear(); @@ -505,9 +480,9 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { } // Create the three loaders - rtreeBulkLoader = ((LSMRTreeDiskComponent) component).getRTree().createBulkLoader(fillFactor, verifyInput, + rtreeBulkLoader = ((LSMRTreeDiskComponent) component).getIndex().createBulkLoader(fillFactor, verifyInput, numElementsHint, false); - btreeBulkLoader = (BTreeBulkLoader) ((LSMRTreeDiskComponent) component).getBTree() + btreeBulkLoader = (BTreeBulkLoader) ((LSMRTreeDiskComponent) component).getBuddyIndex() .createBulkLoader(fillFactor, verifyInput, numElementsHint, false); int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numElementsHint); BloomFilterSpecification bloomFilterSpec = @@ -534,24 +509,7 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { public void cleanupArtifacts() throws HyracksDataException { if (!cleanedUpArtifacts) { cleanedUpArtifacts = true; - try { - ((LSMRTreeDiskComponent) component).getRTree().deactivate(); - } catch (Exception e) { - - } - ((LSMRTreeDiskComponent) component).getRTree().destroy(); - try { - ((LSMRTreeDiskComponent) component).getBTree().deactivate(); - } catch (Exception e) { - - } - ((LSMRTreeDiskComponent) component).getBTree().destroy(); - try { - ((LSMRTreeDiskComponent) component).getBloomFilter().deactivate(); - } catch (Exception e) { - - } - ((LSMRTreeDiskComponent) component).getBloomFilter().destroy(); + ((LSMRTreeDiskComponent) component).deactivateAndDestroy(); } } @@ -570,12 +528,7 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { // Since this is a transaction component, validate and // deactivate. it could later be added or deleted component.markAsValid(durable); - RTree rtree = ((LSMRTreeDiskComponent) component).getRTree(); - BTree btree = ((LSMRTreeDiskComponent) component).getBTree(); - BloomFilter bloomFilter = ((LSMRTreeDiskComponent) component).getBloomFilter(); - rtree.deactivate(); - btree.deactivate(); - bloomFilter.deactivate(); + component.deactivate(); } else { getLsmHarness().addBulkLoadedComponent(component); } @@ -685,7 +638,7 @@ public class ExternalRTree extends LSMRTree implements ITwoPCIndex { @Override public void commitTransaction() throws HyracksDataException { LSMComponentFileReferences componentFileRefrences = fileManager.getTransactionFileReferenceForCommit(); - LSMRTreeDiskComponent component = null; + ILSMDiskComponent component = null; if (componentFileRefrences != null) { component = createDiskComponent(componentFactory, componentFileRefrences.getInsertIndexFileReference(), componentFileRefrences.getDeleteIndexFileReference(), http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java index ca0e4e1..9ba96a6 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTree.java @@ -20,9 +20,7 @@ package org.apache.hyracks.storage.am.lsm.rtree.impls; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; @@ -31,25 +29,19 @@ import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.io.IIOManager; import org.apache.hyracks.data.std.primitive.IntegerPointable; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; -import org.apache.hyracks.storage.am.bloomfilter.impls.BloomCalculations; -import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilter; -import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterFactory; -import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterSpecification; -import org.apache.hyracks.storage.am.btree.impls.BTree; import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor; import org.apache.hyracks.storage.am.btree.impls.RangePredicate; import org.apache.hyracks.storage.am.common.api.IIndexOperationContext; -import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor; import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation; import org.apache.hyracks.storage.am.common.tuples.DualTupleReference; import org.apache.hyracks.storage.am.lsm.common.api.IComponentFilterHelper; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilterFrameFactory; import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentBulkLoader; +import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentFactory; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperation; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler; @@ -62,17 +54,15 @@ import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache; import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexOperationContext; import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences; import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFilterManager; -import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory; import org.apache.hyracks.storage.am.rtree.frames.RTreeFrameFactory; -import org.apache.hyracks.storage.am.rtree.impls.RTree; +import org.apache.hyracks.storage.am.rtree.impls.RTree.RTreeAccessor; import org.apache.hyracks.storage.am.rtree.impls.RTreeSearchCursor; import org.apache.hyracks.storage.am.rtree.impls.SearchPredicate; -import org.apache.hyracks.storage.common.IIndexBulkLoader; import org.apache.hyracks.storage.common.IIndexCursor; import org.apache.hyracks.storage.common.IModificationOperationCallback; import org.apache.hyracks.storage.common.ISearchOperationCallback; import org.apache.hyracks.storage.common.ISearchPredicate; -import org.apache.hyracks.storage.common.MultiComparator; +import org.apache.hyracks.storage.common.buffercache.IBufferCache; public class LSMRTree extends AbstractLSMRTree { protected final int[] buddyBTreeFields; @@ -80,22 +70,20 @@ public class LSMRTree extends AbstractLSMRTree { public LSMRTree(IIOManager ioManager, List<IVirtualBufferCache> virtualBufferCaches, RTreeFrameFactory rtreeInteriorFrameFactory, RTreeFrameFactory rtreeLeafFrameFactory, ITreeIndexFrameFactory btreeInteriorFrameFactory, ITreeIndexFrameFactory btreeLeafFrameFactory, - ILSMIndexFileManager fileNameManager, TreeIndexFactory<RTree> diskRTreeFactory, - TreeIndexFactory<BTree> diskBTreeFactory, BloomFilterFactory bloomFilterFactory, - IComponentFilterHelper filterHelper, ILSMComponentFilterFrameFactory filterFrameFactory, - LSMComponentFilterManager filterManager, double bloomFilterFalsePositiveRate, int fieldCount, - IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories, - ILinearizeComparatorFactory linearizer, int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, - ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, - ILSMIOOperationCallback ioOpCallback, int[] rtreeFields, int[] buddyBTreeFields, int[] filterFields, - boolean durable, boolean isPointMBR) throws HyracksDataException { + IBufferCache diskBufferCache, ILSMIndexFileManager fileNameManager, + ILSMDiskComponentFactory componentFactory, IComponentFilterHelper filterHelper, + ILSMComponentFilterFrameFactory filterFrameFactory, LSMComponentFilterManager filterManager, + double bloomFilterFalsePositiveRate, int fieldCount, IBinaryComparatorFactory[] rtreeCmpFactories, + IBinaryComparatorFactory[] btreeCmpFactories, ILinearizeComparatorFactory linearizer, + int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, ILSMMergePolicy mergePolicy, + ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, + int[] rtreeFields, int[] buddyBTreeFields, int[] filterFields, boolean durable, boolean isPointMBR) + throws HyracksDataException { super(ioManager, virtualBufferCaches, rtreeInteriorFrameFactory, rtreeLeafFrameFactory, - btreeInteriorFrameFactory, btreeLeafFrameFactory, fileNameManager, - new LSMRTreeDiskComponentFactory(diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, filterHelper), - fieldCount, rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields, linearizerArray, - bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler, ioOpCallback, filterHelper, - filterFrameFactory, filterManager, rtreeFields, filterFields, durable, isPointMBR, - diskRTreeFactory.getBufferCache()); + btreeInteriorFrameFactory, btreeLeafFrameFactory, diskBufferCache, fileNameManager, componentFactory, + componentFactory, fieldCount, rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields, + linearizerArray, bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler, ioOpCallback, + filterHelper, filterFrameFactory, filterManager, rtreeFields, filterFields, durable, isPointMBR); this.buddyBTreeFields = buddyBTreeFields; } @@ -104,64 +92,21 @@ public class LSMRTree extends AbstractLSMRTree { */ public LSMRTree(IIOManager ioManager, ITreeIndexFrameFactory rtreeInteriorFrameFactory, ITreeIndexFrameFactory rtreeLeafFrameFactory, ITreeIndexFrameFactory btreeInteriorFrameFactory, - ITreeIndexFrameFactory btreeLeafFrameFactory, ILSMIndexFileManager fileNameManager, - TreeIndexFactory<RTree> diskRTreeFactory, TreeIndexFactory<BTree> diskBTreeFactory, - BloomFilterFactory bloomFilterFactory, double bloomFilterFalsePositiveRate, - IBinaryComparatorFactory[] rtreeCmpFactories, IBinaryComparatorFactory[] btreeCmpFactories, - ILinearizeComparatorFactory linearizer, int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, - ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, - ILSMIOOperationCallback ioOpCallback, int[] buddyBTreeFields, boolean durable, boolean isPointMBR) { + ITreeIndexFrameFactory btreeLeafFrameFactory, IBufferCache diskBufferCache, + ILSMIndexFileManager fileNameManager, ILSMDiskComponentFactory componentFactory, + double bloomFilterFalsePositiveRate, IBinaryComparatorFactory[] rtreeCmpFactories, + IBinaryComparatorFactory[] btreeCmpFactories, ILinearizeComparatorFactory linearizer, + int[] comparatorFields, IBinaryComparatorFactory[] linearizerArray, ILSMMergePolicy mergePolicy, + ILSMOperationTracker opTracker, ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback ioOpCallback, + int[] buddyBTreeFields, boolean durable, boolean isPointMBR) { super(ioManager, rtreeInteriorFrameFactory, rtreeLeafFrameFactory, btreeInteriorFrameFactory, - btreeLeafFrameFactory, fileNameManager, - new LSMRTreeDiskComponentFactory(diskRTreeFactory, diskBTreeFactory, bloomFilterFactory, null), - rtreeCmpFactories, btreeCmpFactories, linearizer, comparatorFields, linearizerArray, - bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler, ioOpCallback, durable, isPointMBR, - diskRTreeFactory.getBufferCache()); + btreeLeafFrameFactory, diskBufferCache, fileNameManager, componentFactory, rtreeCmpFactories, + btreeCmpFactories, linearizer, comparatorFields, linearizerArray, bloomFilterFalsePositiveRate, + mergePolicy, opTracker, ioScheduler, ioOpCallback, durable, isPointMBR); this.buddyBTreeFields = buddyBTreeFields; } @Override - protected ILSMDiskComponent loadComponent(LSMComponentFileReferences lsmComonentFileReferences) - throws HyracksDataException { - return createDiskComponent(componentFactory, lsmComonentFileReferences.getInsertIndexFileReference(), - lsmComonentFileReferences.getDeleteIndexFileReference(), - lsmComonentFileReferences.getBloomFilterFileReference(), false); - } - - @Override - protected void deactivateDiskComponent(ILSMDiskComponent c) throws HyracksDataException { - LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) c; - RTree rtree = component.getRTree(); - BTree btree = component.getBTree(); - BloomFilter bloomFilter = component.getBloomFilter(); - rtree.deactivate(); - btree.deactivate(); - bloomFilter.deactivate(); - rtree.purge(); - btree.purge(); - bloomFilter.purge(); - } - - @Override - protected void destroyDiskComponent(ILSMDiskComponent c) throws HyracksDataException { - LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) c; - component.getBTree().destroy(); - component.getBloomFilter().destroy(); - component.getRTree().destroy(); - } - - @Override - protected void clearDiskComponent(ILSMDiskComponent c) throws HyracksDataException { - LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) c; - component.getBTree().deactivate(); - component.getBloomFilter().deactivate(); - component.getRTree().deactivate(); - component.getBTree().destroy(); - component.getBloomFilter().destroy(); - component.getRTree().destroy(); - } - - @Override public ILSMDiskComponent doFlush(ILSMIOOperation operation) throws HyracksDataException { LSMRTreeFlushOperation flushOp = (LSMRTreeFlushOperation) operation; LSMRTreeMemoryComponent flushingComponent = (LSMRTreeMemoryComponent) flushOp.getFlushingComponent(); @@ -170,20 +115,20 @@ public class LSMRTree extends AbstractLSMRTree { // The RTree should be renamed before the BTree. // scan the memory RTree - ITreeIndexAccessor memRTreeAccessor = flushingComponent.getRTree() - .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); - RTreeSearchCursor rtreeScanCursor = (RTreeSearchCursor) memRTreeAccessor.createSearchCursor(false); + RTreeAccessor memRTreeAccessor = flushingComponent.getIndex().createAccessor(NoOpOperationCallback.INSTANCE, + NoOpOperationCallback.INSTANCE); + RTreeSearchCursor rtreeScanCursor = memRTreeAccessor.createSearchCursor(false); SearchPredicate rtreeNullPredicate = new SearchPredicate(null, null); memRTreeAccessor.search(rtreeScanCursor, rtreeNullPredicate); - LSMRTreeDiskComponent component = createDiskComponent(componentFactory, flushOp.getTarget(), + ILSMDiskComponent component = createDiskComponent(componentFactory, flushOp.getTarget(), flushOp.getBTreeTarget(), flushOp.getBloomFilterTarget(), true); //count the number of tuples in the buddy btree - ITreeIndexAccessor memBTreeAccessor = flushingComponent.getBTree() + BTreeAccessor memBTreeAccessor = flushingComponent.getBuddyIndex() .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); RangePredicate btreeNullPredicate = new RangePredicate(null, null, true, true, null, null); - IIndexCursor btreeCountingCursor = ((BTreeAccessor) memBTreeAccessor).createCountingSearchCursor(); + IIndexCursor btreeCountingCursor = memBTreeAccessor.createCountingSearchCursor(); memBTreeAccessor.search(btreeCountingCursor, btreeNullPredicate); long numBTreeTuples = 0L; try { @@ -197,14 +142,14 @@ public class LSMRTree extends AbstractLSMRTree { } ILSMDiskComponentBulkLoader componentBulkLoader = - createComponentBulkLoader(component, 1.0f, false, numBTreeTuples, false, false, false); + component.createBulkLoader(1.0f, false, numBTreeTuples, false, false, false); ITreeIndexCursor cursor; IBinaryComparatorFactory[] linearizerArray = { linearizer }; - TreeTupleSorter rTreeTupleSorter = new TreeTupleSorter(flushingComponent.getRTree().getFileId(), + TreeTupleSorter rTreeTupleSorter = new TreeTupleSorter(flushingComponent.getIndex().getFileId(), linearizerArray, rtreeLeafFrameFactory.createFrame(), rtreeLeafFrameFactory.createFrame(), - flushingComponent.getRTree().getBufferCache(), comparatorFields); + flushingComponent.getIndex().getBufferCache(), comparatorFields); // BulkLoad the tuples from the in-memory tree into the new disk // RTree. @@ -252,7 +197,7 @@ public class LSMRTree extends AbstractLSMRTree { filterTuples.add(flushingComponent.getLSMComponentFilter().getMinTuple()); filterTuples.add(flushingComponent.getLSMComponentFilter().getMaxTuple()); getFilterManager().updateFilter(component.getLSMComponentFilter(), filterTuples); - getFilterManager().writeFilter(component.getLSMComponentFilter(), component.getRTree()); + getFilterManager().writeFilter(component.getLSMComponentFilter(), component.getMetadataHolder()); } // Note. If we change the filter to write to metadata object, we don't need the if block above flushingComponent.getMetadata().copy(component.getMetadata()); @@ -268,7 +213,8 @@ public class LSMRTree extends AbstractLSMRTree { ISearchPredicate rtreeSearchPred = new SearchPredicate(null, null); ILSMIndexOperationContext opCtx = ((LSMRTreeSortedCursor) cursor).getOpCtx(); search(opCtx, cursor, rtreeSearchPred); - LSMRTreeDiskComponent mergedComponent = createDiskComponent(componentFactory, mergeOp.getTarget(), + + ILSMDiskComponent mergedComponent = createDiskComponent(componentFactory, mergeOp.getTarget(), mergeOp.getBTreeTarget(), mergeOp.getBloomFilterTarget(), true); ILSMDiskComponentBulkLoader componentBulkLoader; // In case we must keep the deleted-keys BTrees, then they must be merged *before* merging the r-trees so that @@ -282,8 +228,7 @@ public class LSMRTree extends AbstractLSMRTree { numElements += ((LSMRTreeDiskComponent) mergeOp.getMergingComponents().get(i)).getBloomFilter() .getNumElements(); } - componentBulkLoader = - createComponentBulkLoader(mergedComponent, 1.0f, false, numElements, false, false, false); + componentBulkLoader = mergedComponent.createBulkLoader(1.0f, false, numElements, false, false, false); LSMRTreeDeletedKeysBTreeMergeCursor btreeCursor = new LSMRTreeDeletedKeysBTreeMergeCursor(opCtx); search(opCtx, btreeCursor, rtreeSearchPred); @@ -298,7 +243,7 @@ public class LSMRTree extends AbstractLSMRTree { } } else { //no buddy-btree needed - componentBulkLoader = createComponentBulkLoader(mergedComponent, 1.0f, false, 0L, false, false, false); + componentBulkLoader = mergedComponent.createBulkLoader(1.0f, false, 0L, false, false, false); } //search old rtree components @@ -319,7 +264,8 @@ public class LSMRTree extends AbstractLSMRTree { filterTuples.add(mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMaxTuple()); } getFilterManager().updateFilter(mergedComponent.getLSMComponentFilter(), filterTuples); - getFilterManager().writeFilter(mergedComponent.getLSMComponentFilter(), mergedComponent.getRTree()); + getFilterManager().writeFilter(mergedComponent.getLSMComponentFilter(), + mergedComponent.getMetadataHolder()); } componentBulkLoader.end(); @@ -334,38 +280,6 @@ public class LSMRTree extends AbstractLSMRTree { buddyBTreeFields); } - @Override - public ILSMDiskComponent createBulkLoadTarget() throws HyracksDataException { - LSMComponentFileReferences componentFileRefs = fileManager.getRelFlushFileReference(); - return createDiskComponent(componentFactory, componentFileRefs.getInsertIndexFileReference(), - componentFileRefs.getDeleteIndexFileReference(), componentFileRefs.getBloomFilterFileReference(), true); - } - - @Override - public ILSMDiskComponentBulkLoader createComponentBulkLoader(ILSMDiskComponent component, float fillFactor, - boolean verifyInput, long numElementsHint, boolean checkIfEmptyIndex, boolean withFilter, - boolean cleanupEmptyComponent) throws HyracksDataException { - BloomFilterSpecification bloomFilterSpec = null; - if (numElementsHint > 0) { - int maxBucketsPerElement = BloomCalculations.maxBucketsPerElement(numElementsHint); - bloomFilterSpec = BloomCalculations.computeBloomSpec(maxBucketsPerElement, bloomFilterFalsePositiveRate); - } - if (withFilter && filterFields != null) { - return new LSMRTreeDiskComponentBulkLoader((LSMRTreeDiskComponent) component, bloomFilterSpec, fillFactor, - verifyInput, numElementsHint, checkIfEmptyIndex, cleanupEmptyComponent, filterManager, treeFields, - filterFields, MultiComparator.create(component.getLSMComponentFilter().getFilterCmpFactories())); - } else { - return new LSMRTreeDiskComponentBulkLoader((LSMRTreeDiskComponent) component, bloomFilterSpec, fillFactor, - verifyInput, numElementsHint, checkIfEmptyIndex, cleanupEmptyComponent); - } - } - - @Override - public IIndexBulkLoader createBulkLoader(float fillLevel, boolean verifyInput, long numElementsHint) - throws HyracksDataException { - return new LSMRTreeBulkLoader(this, fillLevel, verifyInput, numElementsHint); - } - // This function is modified for R-Trees without antimatter tuples to allow buddy B-Tree to have only primary keys @Override public void modify(IIndexOperationContext ictx, ITupleReference tuple) throws HyracksDataException { @@ -404,16 +318,6 @@ public class LSMRTree extends AbstractLSMRTree { } @Override - public Set<String> getLSMComponentPhysicalFiles(ILSMComponent lsmComponent) { - Set<String> files = new HashSet<>(); - LSMRTreeDiskComponent component = (LSMRTreeDiskComponent) lsmComponent; - files.add(component.getBTree().getFileReference().getFile().getAbsolutePath()); - files.add(component.getRTree().getFileReference().getFile().getAbsolutePath()); - files.add(component.getBloomFilter().getFileReference().getFile().getAbsolutePath()); - return files; - } - - @Override protected ILSMIOOperation createFlushOperation(AbstractLSMIndexOperationContext opCtx, LSMComponentFileReferences componentFileRefs, ILSMIOOperationCallback callback) throws HyracksDataException { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java index edb7481..7cc38f9 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeAbstractCursor.java @@ -110,8 +110,8 @@ public abstract class LSMRTreeAbstractCursor implements ITreeIndexCursor { //re-use btreeCursors[i].reset(); } - rtree = ((LSMRTreeMemoryComponent) component).getRTree(); - btree = ((LSMRTreeMemoryComponent) component).getBTree(); + rtree = ((LSMRTreeMemoryComponent) component).getIndex(); + btree = ((LSMRTreeMemoryComponent) component).getBuddyIndex(); } else { if (btreeCursors[i] == null || !btreeCursors[i].isBloomFilterAware()) { // need to create a new one @@ -124,8 +124,8 @@ public abstract class LSMRTreeAbstractCursor implements ITreeIndexCursor { .resetBloomFilter(((LSMRTreeDiskComponent) operationalComponents.get(i)).getBloomFilter()); btreeCursors[i].reset(); } - rtree = ((LSMRTreeDiskComponent) component).getRTree(); - btree = ((LSMRTreeDiskComponent) component).getBTree(); + rtree = ((LSMRTreeDiskComponent) component).getIndex(); + btree = ((LSMRTreeDiskComponent) component).getBuddyIndex(); } if (rtreeCursors[i] == null) { rtreeCursors[i] = new RTreeSearchCursor( @@ -135,10 +135,10 @@ public abstract class LSMRTreeAbstractCursor implements ITreeIndexCursor { rtreeCursors[i].reset(); } if (rtreeAccessors[i] == null) { - rtreeAccessors[i] = (RTreeAccessor) rtree.createAccessor(NoOpOperationCallback.INSTANCE, - NoOpOperationCallback.INSTANCE); - btreeAccessors[i] = (BTreeAccessor) btree.createAccessor(NoOpOperationCallback.INSTANCE, - NoOpOperationCallback.INSTANCE); + rtreeAccessors[i] = + rtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + btreeAccessors[i] = + btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); } else { rtreeAccessors[i].reset(rtree, NoOpOperationCallback.INSTANCE); btreeAccessors[i].reset(btree, NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeBulkLoader.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeBulkLoader.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeBulkLoader.java deleted file mode 100644 index b30e2fa..0000000 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeBulkLoader.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.hyracks.storage.am.lsm.rtree.impls; - -import org.apache.hyracks.api.exceptions.HyracksDataException; -import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; -import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType; -import org.apache.hyracks.storage.common.IIndexBulkLoader; - -public class LSMRTreeBulkLoader implements IIndexBulkLoader { - private final ILSMDiskComponent component; - private final LSMRTree lsmIndex; - private final IIndexBulkLoader componentBulkLoader; - - public LSMRTreeBulkLoader(LSMRTree lsmIndex, float fillFactor, boolean verifyInput, long numElementsHint) - throws HyracksDataException { - this.lsmIndex = lsmIndex; - // Note that by using a flush target file name, we state that the - // new bulk loaded tree is "newer" than any other merged tree. - this.component = lsmIndex.createBulkLoadTarget(); - this.componentBulkLoader = lsmIndex.createComponentBulkLoader(component, fillFactor, verifyInput, - numElementsHint, false, true, true); - } - - @Override - public void add(ITupleReference tuple) throws HyracksDataException { - componentBulkLoader.add(tuple); - } - - @Override - public void end() throws HyracksDataException { - componentBulkLoader.end(); - if (component.getComponentSize() > 0) { - lsmIndex.getIOOperationCallback().afterOperation(LSMOperationType.FLUSH, null, component); - lsmIndex.getLsmHarness().addBulkLoadedComponent(component); - } - } - - @Override - public void abort() throws HyracksDataException { - componentBulkLoader.abort(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java index dc140a2..d20b1bd 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDeletedKeysBTreeMergeCursor.java @@ -61,7 +61,7 @@ public class LSMRTreeDeletedKeysBTreeMergeCursor extends LSMIndexSearchCursor { ILSMComponent component = operationalComponents.get(i); IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getBTreeLeafFrameFactory().createFrame(); rangeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false); - BTree btree = ((LSMRTreeDiskComponent) component).getBTree(); + BTree btree = ((LSMRTreeDiskComponent) component).getBuddyIndex(); btreeAccessors[i] = btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); btreeAccessors[i].search(rangeCursors[i], btreePredicate); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponent.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponent.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponent.java index 0f7943d..e04868d 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponent.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponent.java @@ -18,79 +18,92 @@ */ package org.apache.hyracks.storage.am.lsm.rtree.impls; -import org.apache.hyracks.api.exceptions.HyracksDataException; +import java.util.HashSet; +import java.util.Set; + import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilter; import org.apache.hyracks.storage.am.btree.impls.BTree; import org.apache.hyracks.storage.am.common.api.IMetadataPageManager; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter; -import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMDiskComponent; -import org.apache.hyracks.storage.am.lsm.common.util.ComponentUtils; +import org.apache.hyracks.storage.am.lsm.common.api.AbstractLSMWithBuddyDiskComponent; +import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex; import org.apache.hyracks.storage.am.rtree.impls.RTree; +import org.apache.hyracks.storage.common.buffercache.IBufferCache; -public class LSMRTreeDiskComponent extends AbstractLSMDiskComponent { +public class LSMRTreeDiskComponent extends AbstractLSMWithBuddyDiskComponent { private final RTree rtree; private final BTree btree; private final BloomFilter bloomFilter; - public LSMRTreeDiskComponent(RTree rtree, BTree btree, BloomFilter bloomFilter, ILSMComponentFilter filter) { - super((IMetadataPageManager) rtree.getPageManager(), filter); + public LSMRTreeDiskComponent(AbstractLSMIndex lsmIndex, RTree rtree, BTree btree, BloomFilter bloomFilter, + ILSMComponentFilter filter) { + super(lsmIndex, getMetadataPageManager(rtree), filter); this.rtree = rtree; this.btree = btree; this.bloomFilter = bloomFilter; } @Override - public void destroy() throws HyracksDataException { - rtree.deactivate(); - rtree.destroy(); - if (btree != null) { - btree.deactivate(); - btree.destroy(); - bloomFilter.deactivate(); - bloomFilter.destroy(); - } - } - - public RTree getRTree() { - return rtree; - } - - public BTree getBTree() { + public BTree getBuddyIndex() { return btree; } + @Override public BloomFilter getBloomFilter() { return bloomFilter; } @Override + public IBufferCache getBloomFilterBufferCache() { + return btree.getBufferCache(); + } + + @Override public long getComponentSize() { - long size = rtree.getFileReference().getFile().length(); - if (btree != null) { - size += btree.getFileReference().getFile().length(); - size += bloomFilter.getFileReference().getFile().length(); - } + long size = getComponentSize(rtree); + size += btree.getFileReference().getFile().length(); + size += bloomFilter.getFileReference().getFile().length(); return size; } @Override + public Set<String> getLSMComponentPhysicalFiles() { + Set<String> files = getFiles(rtree); + files.add(btree.getFileReference().getFile().getAbsolutePath()); + files.add(bloomFilter.getFileReference().getFile().getAbsolutePath()); + return files; + } + + @Override public int getFileReferenceCount() { - return rtree.getBufferCache().getFileReferenceCount(rtree.getFileId()); + return getFileReferenceCount(rtree); } @Override - public String toString() { - return getClass().getSimpleName() + ":" + rtree.getFileReference().getRelativePath(); + public RTree getMetadataHolder() { + return rtree; } @Override - public void markAsValid(boolean persist) throws HyracksDataException { - if (bloomFilter != null) { - ComponentUtils.markAsValid(btree.getBufferCache(), bloomFilter, persist); - } - if (btree != null) { - ComponentUtils.markAsValid(btree, persist); - } - ComponentUtils.markAsValid(rtree, persist); + public RTree getIndex() { + return rtree; + } + + static IMetadataPageManager getMetadataPageManager(RTree rtree) { + return (IMetadataPageManager) rtree.getPageManager(); + } + + static long getComponentSize(RTree rtree) { + return rtree.getFileReference().getFile().length(); + } + + static int getFileReferenceCount(RTree rtree) { + return rtree.getBufferCache().getFileReferenceCount(rtree.getFileId()); + } + + static Set<String> getFiles(RTree rtree) { + Set<String> files = new HashSet<>(); + files.add(rtree.getFileReference().getFile().getAbsolutePath()); + return files; } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponentBulkLoader.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponentBulkLoader.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponentBulkLoader.java deleted file mode 100644 index e72918a..0000000 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponentBulkLoader.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.hyracks.storage.am.lsm.rtree.impls; - -import org.apache.hyracks.api.exceptions.HyracksDataException; -import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilter; -import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterSpecification; -import org.apache.hyracks.storage.am.common.api.ITreeIndex; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilterManager; -import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; -import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMDiskComponentWithBuddyBulkLoader; -import org.apache.hyracks.storage.common.IIndex; -import org.apache.hyracks.storage.common.MultiComparator; - -public class LSMRTreeDiskComponentBulkLoader extends AbstractLSMDiskComponentWithBuddyBulkLoader { - - //with filter - public LSMRTreeDiskComponentBulkLoader(LSMRTreeDiskComponent component, BloomFilterSpecification bloomFilterSpec, - float fillFactor, boolean verifyInput, long numElementsHint, boolean checkIfEmptyIndex, - boolean cleanupEmptyComponent, ILSMComponentFilterManager filterManager, int[] indexFields, - int[] filterFields, MultiComparator filterCmp) throws HyracksDataException { - super(component, bloomFilterSpec, fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex, - cleanupEmptyComponent, filterManager, indexFields, filterFields, filterCmp); - } - - //without filter - public LSMRTreeDiskComponentBulkLoader(LSMRTreeDiskComponent component, BloomFilterSpecification bloomFilterSpec, - float fillFactor, boolean verifyInput, long numElementsHint, boolean checkIfEmptyIndex, - boolean cleanupEmptyComponent) throws HyracksDataException { - super(component, bloomFilterSpec, fillFactor, verifyInput, numElementsHint, checkIfEmptyIndex, - cleanupEmptyComponent, null, null, null, null); - } - - @Override - protected BloomFilter getBloomFilter(ILSMDiskComponent component) { - return ((LSMRTreeDiskComponent) component).getBloomFilter(); - } - - @Override - protected IIndex getIndex(ILSMDiskComponent component) { - return ((LSMRTreeDiskComponent) component).getRTree(); - } - - @Override - protected ITreeIndex getBuddyBTree(ILSMDiskComponent component) { - return ((LSMRTreeDiskComponent) component).getBTree(); - } - -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponentFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponentFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponentFactory.java index c3d8282..ae25e93 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponentFactory.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeDiskComponentFactory.java @@ -24,6 +24,7 @@ import org.apache.hyracks.storage.am.bloomfilter.impls.BloomFilterFactory; import org.apache.hyracks.storage.am.btree.impls.BTree; import org.apache.hyracks.storage.am.lsm.common.api.IComponentFilterHelper; import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentFactory; +import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex; import org.apache.hyracks.storage.am.lsm.common.impls.LSMComponentFileReferences; import org.apache.hyracks.storage.am.lsm.common.impls.TreeIndexFactory; import org.apache.hyracks.storage.am.rtree.impls.RTree; @@ -43,8 +44,9 @@ public class LSMRTreeDiskComponentFactory implements ILSMDiskComponentFactory { } @Override - public LSMRTreeDiskComponent createComponent(LSMComponentFileReferences cfr) throws HyracksDataException { - return new LSMRTreeDiskComponent(rtreeFactory.createIndexInstance(cfr.getInsertIndexFileReference()), + public LSMRTreeDiskComponent createComponent(AbstractLSMIndex lsmIndex, LSMComponentFileReferences cfr) + throws HyracksDataException { + return new LSMRTreeDiskComponent(lsmIndex, rtreeFactory.createIndexInstance(cfr.getInsertIndexFileReference()), btreeFactory.createIndexInstance(cfr.getDeleteIndexFileReference()), bloomFilterFactory.createBloomFiltertInstance(cfr.getBloomFilterFileReference()), filterHelper == null ? null : filterHelper.createFilter()); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMemoryComponent.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMemoryComponent.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMemoryComponent.java index 957e2a9..abb3ce1 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMemoryComponent.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMemoryComponent.java @@ -22,11 +22,11 @@ package org.apache.hyracks.storage.am.lsm.rtree.impls; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.storage.am.btree.impls.BTree; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter; +import org.apache.hyracks.storage.am.lsm.common.api.AbstractLSMWithBuddyMemoryComponent; import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache; -import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMMemoryComponent; import org.apache.hyracks.storage.am.rtree.impls.RTree; -public class LSMRTreeMemoryComponent extends AbstractLSMMemoryComponent { +public class LSMRTreeMemoryComponent extends AbstractLSMWithBuddyMemoryComponent { private final RTree rtree; private final BTree btree; @@ -38,27 +38,19 @@ public class LSMRTreeMemoryComponent extends AbstractLSMMemoryComponent { this.btree = btree; } - public RTree getRTree() { + @Override + public RTree getIndex() { return rtree; } - public BTree getBTree() { + @Override + public BTree getBuddyIndex() { return btree; } @Override - public void reset() throws HyracksDataException { - super.reset(); - rtree.deactivate(); - rtree.destroy(); - rtree.create(); - rtree.activate(); - if (btree != null) { - btree.deactivate(); - btree.destroy(); - btree.create(); - btree.activate(); - } + public void validate() throws HyracksDataException { + throw new UnsupportedOperationException("Validation not implemented for LSM R-Trees."); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/77f89525/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeOpContext.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeOpContext.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeOpContext.java index 670406e..74d9685 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeOpContext.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeOpContext.java @@ -62,14 +62,14 @@ public final class LSMRTreeOpContext extends AbstractLSMIndexOperationContext { for (int i = 0; i < mutableComponents.size(); i++) { LSMRTreeMemoryComponent mutableComponent = (LSMRTreeMemoryComponent) mutableComponents.get(i); if (allFields != null) { - mutableRTreeAccessors[i] = (RTree.RTreeAccessor) mutableComponent.getRTree() - .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE, allFields); + mutableRTreeAccessors[i] = mutableComponent.getIndex().createAccessor(NoOpOperationCallback.INSTANCE, + NoOpOperationCallback.INSTANCE, allFields); } else { - mutableRTreeAccessors[i] = (RTree.RTreeAccessor) mutableComponent.getRTree() - .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + mutableRTreeAccessors[i] = mutableComponent.getIndex().createAccessor(NoOpOperationCallback.INSTANCE, + NoOpOperationCallback.INSTANCE); } - mutableBTreeAccessors[i] = (BTree.BTreeAccessor) mutableComponent.getBTree() - .createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + mutableBTreeAccessors[i] = mutableComponent.getBuddyIndex().createAccessor(NoOpOperationCallback.INSTANCE, + NoOpOperationCallback.INSTANCE); rtreeOpContexts[i] = mutableRTreeAccessors[i].getOpContext(); btreeOpContexts[i] = mutableBTreeAccessors[i].getOpContext();
