[NO ISSUE][RT][IDX] Simplify index.createAccessor() - user model changes: no - storage format changes: no - interface change: yes (changed) IIndex, ILSMIndex (new) IIndexAccessParameters
details: - Refactor index.createAccessor() method to accept an instance of IIndexAccessParameters as its parameter since currently only ModificationCallBack and SearchOperationCallback can be passed. If an accessor needs to have additional parameters, there was no way to pass them. Change-Id: Iae015c342e830c81d666428447b595280139740e Reviewed-on: https://asterix-gerrit.ics.uci.edu/2120 Sonar-Qube: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: abdullah alamoudi <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/40cff7be Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/40cff7be Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/40cff7be Branch: refs/heads/master Commit: 40cff7be38a96abd6d839f72d5d72d1006531ee3 Parents: 18dee96 Author: Taewoo Kim <[email protected]> Authored: Mon Nov 6 12:17:40 2017 -0800 Committer: Taewoo Kim <[email protected]> Committed: Mon Nov 6 14:45:58 2017 -0800 ---------------------------------------------------------------------- .../apache/asterix/app/nc/RecoveryManager.java | 8 +-- .../test/dataflow/ComponentRollbackTest.java | 29 ++++------ .../context/CorrelatedPrefixMergePolicy.java | 5 +- .../common/context/DatasetLifecycleManager.java | 8 +-- .../context/PrimaryIndexOperationTracker.java | 4 +- .../LSMInsertDeleteOperatorNodePushable.java | 5 +- .../CorrelatedPrefixMergePolicyTest.java | 6 +- .../apache/asterix/metadata/MetadataNode.java | 27 ++++----- .../LSMPrimaryUpsertOperatorNodePushable.java | 6 +- .../hyracks/storage/am/btree/impls/BTree.java | 10 ++-- .../storage/am/btree/test/FramewriterTest.java | 4 +- ...xInsertUpdateDeleteOperatorNodePushable.java | 5 +- .../IndexSearchOperatorNodePushable.java | 5 +- ...eIndexDiskOrderScanOperatorNodePushable.java | 6 +- .../am/common/impls/AbstractTreeIndex.java | 3 +- .../am/common/impls/IndexAccessParameters.java | 59 ++++++++++++++++++++ .../common/impls/NoOpIndexAccessParameters.java | 48 ++++++++++++++++ .../am/lsm/btree/impls/ExternalBTree.java | 7 +-- .../lsm/btree/impls/ExternalBTreeWithBuddy.java | 6 +- .../storage/am/lsm/btree/impls/LSMBTree.java | 11 ++-- .../impls/LSMBTreeDiskComponentScanCursor.java | 4 +- .../am/lsm/btree/impls/LSMBTreeOpContext.java | 8 ++- .../btree/impls/LSMBTreePointSearchCursor.java | 4 +- .../btree/impls/LSMBTreeRangeSearchCursor.java | 4 +- .../impls/LSMBTreeWithBuddyAbstractCursor.java | 7 +-- .../btree/impls/LSMBuddyBTreeMergeCursor.java | 5 +- .../storage/am/lsm/common/api/ILSMIndex.java | 6 +- .../LSMIndexCompactOperatorNodePushable.java | 5 +- .../am/lsm/common/impls/AbstractLSMIndex.java | 3 +- .../lsm/common/impls/ConstantMergePolicy.java | 14 +++-- .../storage/am/lsm/common/impls/LSMHarness.java | 5 +- .../am/lsm/common/impls/PrefixMergePolicy.java | 8 +-- .../lsm/common/impls/ThreadCountingTracker.java | 5 +- .../invertedindex/impls/LSMInvertedIndex.java | 31 +++++----- .../impls/LSMInvertedIndexOpContext.java | 10 ++-- .../inmemory/InMemoryInvertedIndex.java | 6 +- .../inmemory/InMemoryInvertedIndexAccessor.java | 4 +- .../InMemoryInvertedIndexOpContext.java | 5 +- .../PartitionedInMemoryInvertedIndex.java | 7 +-- .../ondisk/OnDiskInvertedIndex.java | 14 ++--- .../ondisk/OnDiskInvertedIndexOpContext.java | 4 +- .../OnDiskInvertedIndexRangeSearchCursor.java | 4 +- .../ondisk/PartitionedOnDiskInvertedIndex.java | 7 +-- .../am/lsm/rtree/impls/ExternalRTree.java | 8 +-- .../storage/am/lsm/rtree/impls/LSMRTree.java | 20 +++---- .../lsm/rtree/impls/LSMRTreeAbstractCursor.java | 7 +-- .../LSMRTreeDeletedKeysBTreeMergeCursor.java | 4 +- .../am/lsm/rtree/impls/LSMRTreeOpContext.java | 9 +-- .../impls/LSMRTreeWithAntiMatterTuples.java | 19 +++---- ...SMRTreeWithAntiMatterTuplesSearchCursor.java | 10 ++-- .../hyracks/storage/am/rtree/impls/RTree.java | 6 +- .../apache/hyracks/storage/common/IIndex.java | 10 ++-- .../storage/common/IIndexAccessParameters.java | 43 ++++++++++++++ ...stractModificationOperationCallbackTest.java | 4 +- .../AbstractSearchOperationCallbackTest.java | 7 ++- .../am/btree/OrderedIndexExamplesTest.java | 36 +++++++----- .../am/common/AbstractIndexTestWorker.java | 5 +- .../storage/am/common/IndexTestContext.java | 5 +- .../am/rtree/AbstractRTreeExamplesTest.java | 25 ++++----- .../storage/am/btree/BTreeSearchCursorTest.java | 21 ++++--- .../storage/am/btree/BTreeStatsTest.java | 6 +- .../storage/am/btree/BTreeUpdateSearchTest.java | 6 +- .../am/lsm/btree/LSMBTreeExamplesTest.java | 6 +- ...MBTreeModificationOperationCallbackTest.java | 4 +- .../LSMBTreeSearchOperationCallbackTest.java | 7 ++- ...TreeUpdateInPlaceScanDiskComponentsTest.java | 6 +- .../am/lsm/btree/LSMBTreeUpdateInPlaceTest.java | 4 +- .../am/lsm/btree/perf/InMemoryBTreeRunner.java | 4 +- .../am/lsm/btree/perf/LSMTreeRunner.java | 4 +- .../lsm/common/test/PrefixMergePolicyTest.java | 6 +- .../LSMInvertedIndexMergeTest.java | 6 +- .../PartitionedLSMInvertedIndexMergeTest.java | 6 +- .../util/LSMInvertedIndexTestUtils.java | 10 ++-- .../lsm/rtree/AbstractLSMRTreeExamplesTest.java | 5 +- .../storage/am/rtree/RTreeSearchCursorTest.java | 5 +- 75 files changed, 458 insertions(+), 298 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java index a502de9..25385c6 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java @@ -68,7 +68,7 @@ import org.apache.hyracks.api.application.INCServiceContext; import org.apache.hyracks.api.exceptions.ErrorCode; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.lifecycle.ILifeCycleComponent; -import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex; @@ -662,8 +662,7 @@ public class RecoveryManager implements IRecoveryManager, ILifeCycleComponent { try { ILSMIndex index = (ILSMIndex) datasetLifecycleManager.getIndex(logRecord.getDatasetId(), logRecord.getResourceId()); - ILSMIndexAccessor indexAccessor = - index.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor indexAccessor = index.createAccessor(NoOpIndexAccessParameters.INSTANCE); if (logRecord.getNewOp() == AbstractIndexModificationOperationCallback.INSERT_BYTE) { indexAccessor.forceDelete(logRecord.getNewValue()); } else if (logRecord.getNewOp() == AbstractIndexModificationOperationCallback.DELETE_BYTE) { @@ -696,8 +695,7 @@ public class RecoveryManager implements IRecoveryManager, ILifeCycleComponent { int datasetId = logRecord.getDatasetId(); long resourceId = logRecord.getResourceId(); ILSMIndex index = (ILSMIndex) datasetLifecycleManager.getIndex(datasetId, resourceId); - ILSMIndexAccessor indexAccessor = - index.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor indexAccessor = index.createAccessor(NoOpIndexAccessParameters.INSTANCE); if (logRecord.getNewOp() == AbstractIndexModificationOperationCallback.INSERT_BYTE) { indexAccessor.forceInsert(logRecord.getNewValue()); } else if (logRecord.getNewOp() == AbstractIndexModificationOperationCallback.DELETE_BYTE) { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/ComponentRollbackTest.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/ComponentRollbackTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/ComponentRollbackTest.java index 36cb4bb..ac5e606 100644 --- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/ComponentRollbackTest.java +++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/ComponentRollbackTest.java @@ -64,7 +64,7 @@ import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAppender; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.storage.am.common.api.IIndexDataflowHelper; import org.apache.hyracks.storage.am.common.dataflow.IndexDataflowHelperFactory; -import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.lsm.btree.impl.TestLsmBtree; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; @@ -196,13 +196,12 @@ public class ComponentRollbackTest { Assert.assertEquals(9, diskComponents.size()); Assert.assertTrue(memComponents.get(lsmBtree.getCurrentMemoryComponentIndex()).isModified()); searchAndAssertCount(nc, ctx, dataset, storageManager, TOTAL_NUM_OF_RECORDS); - ILSMIndexAccessor lsmAccessor = - lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor lsmAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); // rollback a memory component lsmAccessor.deleteComponents(memoryComponentsPredicate); searchAndAssertCount(nc, ctx, dataset, storageManager, TOTAL_NUM_OF_RECORDS - RECORDS_PER_COMPONENT); // rollback the last disk component - lsmAccessor = lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + lsmAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); long lsn = AbstractLSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); DiskComponentLsnPredicate pred = new DiskComponentLsnPredicate(lsn); lsmAccessor.deleteComponents(pred); @@ -246,8 +245,7 @@ public class ComponentRollbackTest { Assert.assertEquals(9, diskComponents.size()); Assert.assertTrue(memComponents.get(lsmBtree.getCurrentMemoryComponentIndex()).isModified()); searchAndAssertCount(nc, ctx, dataset, storageManager, TOTAL_NUM_OF_RECORDS); - ILSMIndexAccessor lsmAccessor = - lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor lsmAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); // rollback a memory component lsmAccessor.deleteComponents(memoryComponentsPredicate); searchAndAssertCount(nc, ctx, dataset, storageManager, TOTAL_NUM_OF_RECORDS - RECORDS_PER_COMPONENT); @@ -268,7 +266,7 @@ public class ComponentRollbackTest { insertOp.close(); searchAndAssertCount(nc, ctx, dataset, storageManager, TOTAL_NUM_OF_RECORDS); // rollback the last disk component - lsmAccessor = lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + lsmAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); long lsn = AbstractLSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); DiskComponentLsnPredicate pred = new DiskComponentLsnPredicate(lsn); lsmAccessor.deleteComponents(pred); @@ -316,8 +314,7 @@ public class ComponentRollbackTest { // wait till firstSearcher enter the components firstSearcher.waitUntilEntered(); // now that we enetered, we will rollback - ILSMIndexAccessor lsmAccessor = - lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor lsmAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); // rollback a memory component lsmAccessor.deleteComponents( c -> (c instanceof ILSMMemoryComponent && ((ILSMMemoryComponent) c).isModified())); @@ -334,7 +331,7 @@ public class ComponentRollbackTest { TOTAL_NUM_OF_RECORDS - RECORDS_PER_COMPONENT); // wait till firstSearcher enter the components secondSearcher.waitUntilEntered(); - lsmAccessor = lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + lsmAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); long lsn = AbstractLSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); DiskComponentLsnPredicate pred = new DiskComponentLsnPredicate(lsn); lsmAccessor.deleteComponents(pred); @@ -439,8 +436,7 @@ public class ComponentRollbackTest { searchAndAssertCount(nc, ctx, dataset, storageManager, TOTAL_NUM_OF_RECORDS); // Now, we will start a full merge Merger merger = new Merger(lsmBtree); - ILSMIndexAccessor mergeAccessor = - lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor mergeAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); // select the components to merge... the last three int numMergedComponents = 3; List<ILSMDiskComponent> mergedComponents = new ArrayList<>(); @@ -626,8 +622,7 @@ public class ComponentRollbackTest { searchAndAssertCount(nc, ctx, dataset, storageManager, TOTAL_NUM_OF_RECORDS); // Now, we will start a merge Merger merger = new Merger(lsmBtree); - ILSMIndexAccessor mergeAccessor = - lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor mergeAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); // select the components to merge... the last three int numMergedComponents = 3; List<ILSMDiskComponent> mergedComponents = new ArrayList<>(); @@ -698,8 +693,7 @@ public class ComponentRollbackTest { searchAndAssertCount(nc, ctx, dataset, storageManager, TOTAL_NUM_OF_RECORDS); // Now, we will start a merge Merger merger = new Merger(lsmBtree); - ILSMIndexAccessor mergeAccessor = - lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor mergeAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); // select the components to merge... the last three List<ILSMDiskComponent> mergedComponents = new ArrayList<>(); long lsn = AbstractLSMIOOperationCallback.getTreeIndexLSN(diskComponents.get(0).getMetadata()); @@ -744,8 +738,7 @@ public class ComponentRollbackTest { Runnable runnable = new Runnable() { @Override public void run() { - ILSMIndexAccessor lsmAccessor = - lsmBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor lsmAccessor = lsmBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); try { lsmAccessor.deleteComponents(predicate); } catch (HyracksDataException e) { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/CorrelatedPrefixMergePolicy.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/CorrelatedPrefixMergePolicy.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/CorrelatedPrefixMergePolicy.java index a20e660..b877cfb 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/CorrelatedPrefixMergePolicy.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/CorrelatedPrefixMergePolicy.java @@ -28,7 +28,7 @@ import java.util.stream.Collectors; import org.apache.asterix.common.api.IDatasetLifecycleManager; import org.apache.commons.lang3.tuple.Pair; import org.apache.hyracks.api.exceptions.HyracksDataException; -import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentId; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex; @@ -126,8 +126,7 @@ public class CorrelatedPrefixMergePolicy extends PrefixMergePolicy { break; } } - ILSMIndexAccessor accessor = - lsmIndex.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor accessor = lsmIndex.createAccessor(NoOpIndexAccessParameters.INSTANCE); accessor.scheduleMerge(lsmIndex.getIOOperationCallback(), mergableComponents); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java index c53af3e..1d9310e 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java @@ -42,7 +42,7 @@ import org.apache.asterix.common.utils.TransactionUtil; import org.apache.hyracks.api.exceptions.ErrorCode; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.lifecycle.ILifeCycleComponent; -import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker; @@ -216,8 +216,7 @@ public class DatasetLifecycleManager implements IDatasetLifecycleManager, ILifeC private static void flushAndWaitForIO(DatasetInfo dsInfo, IndexInfo iInfo) throws HyracksDataException { if (iInfo.isOpen()) { - ILSMIndexAccessor accessor = - iInfo.getIndex().createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor accessor = iInfo.getIndex().createAccessor(NoOpIndexAccessParameters.INSTANCE); accessor.scheduleFlush(iInfo.getIndex().getIOOperationCallback()); } @@ -408,8 +407,7 @@ public class DatasetLifecycleManager implements IDatasetLifecycleManager, ILifeC if (asyncFlush) { for (IndexInfo iInfo : dsInfo.getIndexes().values()) { - ILSMIndexAccessor accessor = - iInfo.getIndex().createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor accessor = iInfo.getIndex().createAccessor(NoOpIndexAccessParameters.INSTANCE); accessor.scheduleFlush(iInfo.getIndex().getIOOperationCallback()); } } else { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java index 0899c21..01e33a7 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/PrimaryIndexOperationTracker.java @@ -29,6 +29,7 @@ import org.apache.asterix.common.transactions.ILogManager; import org.apache.asterix.common.transactions.LogRecord; import org.apache.asterix.common.utils.TransactionUtil; import org.apache.hyracks.api.exceptions.HyracksDataException; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent.ComponentState; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex; @@ -143,8 +144,7 @@ public class PrimaryIndexOperationTracker extends BaseOperationTracker { public synchronized void triggerScheduleFlush(LogRecord logRecord) throws HyracksDataException { for (ILSMIndex lsmIndex : dsInfo.getDatasetIndexes()) { //get resource - ILSMIndexAccessor accessor = - lsmIndex.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor accessor = lsmIndex.createAccessor(NoOpIndexAccessParameters.INSTANCE); //update resource lsn AbstractLSMIOOperationCallback ioOpCallback = (AbstractLSMIOOperationCallback) lsmIndex.getIOOperationCallback(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java index 1c610ac..3879fb8 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/dataflow/LSMInsertDeleteOperatorNodePushable.java @@ -36,11 +36,13 @@ import org.apache.hyracks.dataflow.common.utils.TaskUtil; import org.apache.hyracks.storage.am.common.api.IModificationOperationCallbackFactory; import org.apache.hyracks.storage.am.common.api.ITupleFilterFactory; import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; +import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters; 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.ILSMIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.dataflow.LSMIndexInsertUpdateDeleteOperatorNodePushable; import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex; +import org.apache.hyracks.storage.common.IIndexAccessParameters; public class LSMInsertDeleteOperatorNodePushable extends LSMIndexInsertUpdateDeleteOperatorNodePushable { @@ -88,7 +90,8 @@ public class LSMInsertDeleteOperatorNodePushable extends LSMIndexInsertUpdateDel writer.open(); modCallback = modOpCallbackFactory.createModificationOperationCallback(indexHelper.getResource(), ctx, this); - indexAccessor = lsmIndex.createAccessor(modCallback, NoOpOperationCallback.INSTANCE); + IIndexAccessParameters iap = new IndexAccessParameters(modCallback, NoOpOperationCallback.INSTANCE); + indexAccessor = lsmIndex.createAccessor(iap); if (tupleFilterFactory != null) { tupleFilter = tupleFilterFactory.createTupleFilter(ctx); frameTuple = new FrameTupleReference(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/CorrelatedPrefixMergePolicyTest.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/CorrelatedPrefixMergePolicyTest.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/CorrelatedPrefixMergePolicyTest.java index 9f071bb..01f08db 100644 --- a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/CorrelatedPrefixMergePolicyTest.java +++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/CorrelatedPrefixMergePolicyTest.java @@ -40,8 +40,7 @@ import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy; import org.apache.hyracks.storage.am.lsm.common.impls.LSMDiskComponentId; -import org.apache.hyracks.storage.common.IModificationOperationCallback; -import org.apache.hyracks.storage.common.ISearchOperationCallback; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; @@ -238,8 +237,7 @@ public class CorrelatedPrefixMergePolicyTest extends TestCase { }).when(accessor).scheduleMerge(Mockito.any(ILSMIOOperationCallback.class), Mockito.anyListOf(ILSMDiskComponent.class)); - Mockito.when(index.createAccessor(Mockito.any(IModificationOperationCallback.class), - Mockito.any(ISearchOperationCallback.class))).thenReturn(accessor); + Mockito.when(index.createAccessor(Mockito.any(IIndexAccessParameters.class))).thenReturn(accessor); Mockito.when(index.isPrimaryIndex()).thenReturn(isPrimary); return new IndexInfo(index, DATASET_ID, 0, partition); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java index 51cf988..c183416 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java @@ -112,12 +112,15 @@ import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.dataflow.common.utils.TupleUtils; import org.apache.hyracks.storage.am.btree.impls.RangePredicate; import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor; +import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType; import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex; import org.apache.hyracks.storage.common.IIndex; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.apache.hyracks.storage.common.IIndexAccessor; import org.apache.hyracks.storage.common.IIndexCursor; import org.apache.hyracks.storage.common.IModificationOperationCallback; @@ -479,7 +482,8 @@ public class MetadataNode implements IMetadataNode { IModificationOperationCallback modCallback = createIndexModificationCallback(jobId, resourceID, metadataIndex, lsmIndex, Operation.INSERT); - ILSMIndexAccessor indexAccessor = lsmIndex.createAccessor(modCallback, NoOpOperationCallback.INSTANCE); + IIndexAccessParameters iap = new IndexAccessParameters(modCallback, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor indexAccessor = lsmIndex.createAccessor(iap); ITransactionContext txnCtx = transactionSubsystem.getTransactionManager().getTransactionContext(jobId, false); @@ -518,7 +522,8 @@ public class MetadataNode implements IMetadataNode { new UpsertOperationCallback(metadataIndex.getDatasetId(), metadataIndex.getPrimaryKeyIndexes(), txnCtx, transactionSubsystem.getLockManager(), transactionSubsystem, resourceId, metadataStoragePartition, ResourceType.LSM_BTREE, Operation.UPSERT); - ILSMIndexAccessor indexAccessor = lsmIndex.createAccessor(modCallback, NoOpOperationCallback.INSTANCE); + IIndexAccessParameters iap = new IndexAccessParameters(modCallback, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor indexAccessor = lsmIndex.createAccessor(iap); txnCtx.setWriteTxn(true); txnCtx.registerIndexAndCallback(resourceId, lsmIndex, (AbstractOperationCallback) modCallback, metadataIndex.isPrimaryIndex()); @@ -816,7 +821,8 @@ public class MetadataNode implements IMetadataNode { // prepare a Callback for logging IModificationOperationCallback modCallback = createIndexModificationCallback(jobId, resourceID, metadataIndex, lsmIndex, Operation.DELETE); - ILSMIndexAccessor indexAccessor = lsmIndex.createAccessor(modCallback, NoOpOperationCallback.INSTANCE); + IIndexAccessParameters iap = new IndexAccessParameters(modCallback, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor indexAccessor = lsmIndex.createAccessor(iap); ITransactionContext txnCtx = transactionSubsystem.getTransactionManager().getTransactionContext(jobId, false); @@ -1233,8 +1239,7 @@ public class MetadataNode implements IMetadataNode { String resourceName = index.getFile().toString(); IIndex indexInstance = datasetLifecycleManager.get(resourceName); datasetLifecycleManager.open(resourceName); - IIndexAccessor indexAccessor = - indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + IIndexAccessor indexAccessor = indexInstance.createAccessor(NoOpIndexAccessParameters.INSTANCE); ITreeIndexCursor rangeCursor = (ITreeIndexCursor) indexAccessor.createSearchCursor(false); RangePredicate rangePred = null; @@ -1254,8 +1259,7 @@ public class MetadataNode implements IMetadataNode { index = MetadataPrimaryIndexes.DATASET_DATASET; indexInstance = datasetLifecycleManager.get(resourceName); datasetLifecycleManager.open(resourceName); - indexAccessor = - indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + indexAccessor = indexInstance.createAccessor(NoOpIndexAccessParameters.INSTANCE); rangeCursor = (ITreeIndexCursor) indexAccessor.createSearchCursor(false); rangePred = null; @@ -1276,8 +1280,7 @@ public class MetadataNode implements IMetadataNode { index = MetadataPrimaryIndexes.INDEX_DATASET; indexInstance = datasetLifecycleManager.get(resourceName); datasetLifecycleManager.open(resourceName); - indexAccessor = - indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + indexAccessor = indexInstance.createAccessor(NoOpIndexAccessParameters.INSTANCE); rangeCursor = (ITreeIndexCursor) indexAccessor.createSearchCursor(false); rangePred = null; @@ -1312,8 +1315,7 @@ public class MetadataNode implements IMetadataNode { String resourceName = index.getFile().getRelativePath(); IIndex indexInstance = datasetLifecycleManager.get(resourceName); datasetLifecycleManager.open(resourceName); - IIndexAccessor indexAccessor = - indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + IIndexAccessor indexAccessor = indexInstance.createAccessor(NoOpIndexAccessParameters.INSTANCE); ITreeIndexCursor rangeCursor = (ITreeIndexCursor) indexAccessor.createSearchCursor(false); IBinaryComparator[] searchCmps = null; @@ -1351,8 +1353,7 @@ public class MetadataNode implements IMetadataNode { IIndex indexInstance = datasetLifecycleManager.get(resourceName); datasetLifecycleManager.open(resourceName); try { - IIndexAccessor indexAccessor = - indexInstance.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + IIndexAccessor indexAccessor = indexInstance.createAccessor(NoOpIndexAccessParameters.INSTANCE); IIndexCursor rangeCursor = indexAccessor.createSearchCursor(false); DatasetTupleTranslator tupleReaderWriter = tupleTranslatorProvider.getDatasetTupleTranslator(false); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java index 1f41c82..4664938 100644 --- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java +++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/operators/LSMPrimaryUpsertOperatorNodePushable.java @@ -55,6 +55,7 @@ import org.apache.hyracks.storage.am.common.api.IModificationOperationCallbackFa import org.apache.hyracks.storage.am.common.api.ISearchOperationCallbackFactory; import org.apache.hyracks.storage.am.common.api.ITreeIndex; import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; +import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters; import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation; import org.apache.hyracks.storage.am.common.tuples.PermutingFrameTupleReference; import org.apache.hyracks.storage.am.lsm.common.api.IFrameOperationCallback; @@ -64,6 +65,7 @@ import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.dataflow.LSMIndexInsertUpdateDeleteOperatorNodePushable; import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex; import org.apache.hyracks.storage.am.lsm.common.impls.LSMTreeIndexAccessor; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.apache.hyracks.storage.common.IIndexCursor; import org.apache.hyracks.storage.common.MultiComparator; @@ -96,6 +98,7 @@ public class LSMPrimaryUpsertOperatorNodePushable extends LSMIndexInsertUpdateDe private final ISearchOperationCallbackFactory searchCallbackFactory; private final IFrameTupleProcessor processor; private LSMTreeIndexAccessor lsmAccessor; + private IIndexAccessParameters iap; public LSMPrimaryUpsertOperatorNodePushable(IHyracksTaskContext ctx, int partition, IIndexDataflowHelperFactory indexHelperFactory, int[] fieldPermutation, RecordDescriptor inputRecDesc, @@ -218,7 +221,8 @@ public class LSMPrimaryUpsertOperatorNodePushable extends LSMIndexInsertUpdateDe abstractModCallback = (AbstractIndexModificationOperationCallback) modCallback; searchCallback = (LockThenSearchOperationCallback) searchCallbackFactory .createSearchOperationCallback(indexHelper.getResource().getId(), ctx, this); - indexAccessor = index.createAccessor(abstractModCallback, searchCallback); + iap = new IndexAccessParameters(abstractModCallback, searchCallback); + indexAccessor = index.createAccessor(iap); lsmAccessor = (LSMTreeIndexAccessor) indexAccessor; cursor = indexAccessor.createSearchCursor(false); frameTuple = new FrameTupleReference(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java index 1fbcbb0..63c54c3 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java @@ -49,10 +49,11 @@ import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference; import org.apache.hyracks.storage.am.common.frames.FrameOpSpaceStatus; import org.apache.hyracks.storage.am.common.impls.AbstractTreeIndex; -import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.common.impls.NodeFrontier; import org.apache.hyracks.storage.am.common.impls.TreeIndexDiskOrderScanCursor; import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.apache.hyracks.storage.common.IIndexAccessor; import org.apache.hyracks.storage.common.IIndexBulkLoader; import org.apache.hyracks.storage.common.IIndexCursor; @@ -118,7 +119,7 @@ public class BTree extends AbstractTreeIndex { // Stack validation protocol: // * parent pushes the validation information onto the stack before validation // * child pops the validation information off of the stack after validating - BTreeAccessor accessor = createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + BTreeAccessor accessor = createAccessor(NoOpIndexAccessParameters.INSTANCE); PageValidationInfo pvi = accessor.ctx.createPageValidationInfo(null); accessor.ctx.getValidationInfos().addFirst(pvi); if (isActive) { @@ -818,9 +819,8 @@ public class BTree extends AbstractTreeIndex { } @Override - public BTreeAccessor createAccessor(IModificationOperationCallback modificationCallback, - ISearchOperationCallback searchCallback) { - return new BTreeAccessor(this, modificationCallback, searchCallback); + public BTreeAccessor createAccessor(IIndexAccessParameters iap) { + return new BTreeAccessor(this, iap.getModificationCallback(), iap.getSearchOperationCallback()); } public BTreeAccessor createAccessor(IModificationOperationCallback modificationCallback, http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/test/java/org/apache/hyracks/storage/am/btree/test/FramewriterTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/test/java/org/apache/hyracks/storage/am/btree/test/FramewriterTest.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/test/java/org/apache/hyracks/storage/am/btree/test/FramewriterTest.java index 19b8a68..64f8263 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/test/java/org/apache/hyracks/storage/am/btree/test/FramewriterTest.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/test/java/org/apache/hyracks/storage/am/btree/test/FramewriterTest.java @@ -336,10 +336,10 @@ public class FramewriterTest { int j = 0; for (int i = 0; i < indexAccessors.length; i++) { indexes[j] = Mockito.mock(ITreeIndex.class); - Mockito.when(indexes[j].createAccessor(Mockito.any(), Mockito.any())).thenReturn(indexAccessors[i]); + Mockito.when(indexes[j].createAccessor(Mockito.any())).thenReturn(indexAccessors[i]); j++; indexes[j] = Mockito.mock(ITreeIndex.class); - Mockito.when(indexes[j].createAccessor(Mockito.any(), Mockito.any())) + Mockito.when(indexes[j].createAccessor(Mockito.any())) .thenThrow(new HyracksDataException("failed to create accessor")); j++; } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java index e80a837..35accc3 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexInsertUpdateDeleteOperatorNodePushable.java @@ -34,10 +34,12 @@ import org.apache.hyracks.storage.am.common.api.IIndexDataflowHelper; import org.apache.hyracks.storage.am.common.api.IModificationOperationCallbackFactory; import org.apache.hyracks.storage.am.common.api.ITupleFilter; import org.apache.hyracks.storage.am.common.api.ITupleFilterFactory; +import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters; 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.PermutingFrameTupleReference; import org.apache.hyracks.storage.common.IIndex; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.apache.hyracks.storage.common.IIndexAccessor; import org.apache.hyracks.storage.common.IModificationOperationCallback; import org.apache.hyracks.storage.common.LocalResource; @@ -81,7 +83,8 @@ public class IndexInsertUpdateDeleteOperatorNodePushable extends AbstractUnaryIn writer.open(); LocalResource resource = indexHelper.getResource(); modCallback = modOpCallbackFactory.createModificationOperationCallback(resource, ctx, this); - indexAccessor = index.createAccessor(modCallback, NoOpOperationCallback.INSTANCE); + IIndexAccessParameters iap = new IndexAccessParameters(modCallback, NoOpOperationCallback.INSTANCE); + indexAccessor = index.createAccessor(iap); if (tupleFilterFactory != null) { tupleFilter = tupleFilterFactory.createTupleFilter(ctx); frameTuple = new FrameTupleReference(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java index 1e3d5f0..132149b 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexSearchOperatorNodePushable.java @@ -41,9 +41,11 @@ import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.dataflow.std.base.AbstractUnaryInputUnaryOutputOperatorNodePushable; import org.apache.hyracks.storage.am.common.api.IIndexDataflowHelper; import org.apache.hyracks.storage.am.common.api.ISearchOperationCallbackFactory; +import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.common.tuples.PermutingFrameTupleReference; import org.apache.hyracks.storage.common.IIndex; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.apache.hyracks.storage.common.IIndexAccessor; import org.apache.hyracks.storage.common.IIndexCursor; import org.apache.hyracks.storage.common.ISearchOperationCallback; @@ -150,7 +152,8 @@ public abstract class IndexSearchOperatorNodePushable extends AbstractUnaryInput appender = new FrameTupleAppender(new VSizeFrame(ctx), true); ISearchOperationCallback searchCallback = searchCallbackFactory.createSearchOperationCallback(indexHelper.getResource().getId(), ctx, null); - indexAccessor = index.createAccessor(NoOpOperationCallback.INSTANCE, searchCallback); + IIndexAccessParameters iap = new IndexAccessParameters(NoOpOperationCallback.INSTANCE, searchCallback); + indexAccessor = index.createAccessor(iap); cursor = createCursor(); if (retainInput) { frameTuple = new FrameTupleReference(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorNodePushable.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorNodePushable.java index bc7cb85..dc86c74 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorNodePushable.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/TreeIndexDiskOrderScanOperatorNodePushable.java @@ -34,8 +34,10 @@ import org.apache.hyracks.storage.am.common.api.ITreeIndex; 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.ITreeIndexFrame; +import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.common.impls.TreeIndexDiskOrderScanCursor; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.apache.hyracks.storage.common.ISearchOperationCallback; import org.apache.hyracks.storage.common.LocalResource; @@ -62,8 +64,8 @@ public class TreeIndexDiskOrderScanOperatorNodePushable extends AbstractUnaryOut LocalResource resource = treeIndexHelper.getResource(); ISearchOperationCallback searchCallback = searchCallbackFactory.createSearchOperationCallback(resource.getId(), ctx, null); - ITreeIndexAccessor indexAccessor = - (ITreeIndexAccessor) treeIndex.createAccessor(NoOpOperationCallback.INSTANCE, searchCallback); + IIndexAccessParameters iap = new IndexAccessParameters(NoOpOperationCallback.INSTANCE, searchCallback); + ITreeIndexAccessor indexAccessor = (ITreeIndexAccessor) treeIndex.createAccessor(iap); try { writer.open(); indexAccessor.diskOrderScan(cursor); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java index f03a358..30d6d1b 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java @@ -308,8 +308,7 @@ public abstract class AbstractTreeIndex implements ITreeIndex { ITreeIndexAccessor accessor; public TreeIndexInsertBulkLoader() throws HyracksDataException { - accessor = - (ITreeIndexAccessor) createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + accessor = (ITreeIndexAccessor) createAccessor(NoOpIndexAccessParameters.INSTANCE); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/IndexAccessParameters.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/IndexAccessParameters.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/IndexAccessParameters.java new file mode 100644 index 0000000..3f97aa2 --- /dev/null +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/IndexAccessParameters.java @@ -0,0 +1,59 @@ +/* + * 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.common.impls; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.hyracks.storage.common.IIndexAccessParameters; +import org.apache.hyracks.storage.common.IModificationOperationCallback; +import org.apache.hyracks.storage.common.ISearchOperationCallback; + +public class IndexAccessParameters implements IIndexAccessParameters { + + protected final IModificationOperationCallback modificationCallback; + protected final ISearchOperationCallback searchOperationCallback; + // This map is used to put additional parameters to an index accessor. + protected Map<String, Object> paramMap = null; + + public IndexAccessParameters(IModificationOperationCallback modificationCallback, + ISearchOperationCallback searchOperationCallback) { + this.modificationCallback = modificationCallback; + this.searchOperationCallback = searchOperationCallback; + } + + @Override + public IModificationOperationCallback getModificationCallback() { + return modificationCallback; + } + + @Override + public ISearchOperationCallback getSearchOperationCallback() { + return searchOperationCallback; + } + + @Override + public Map<String, Object> getParameters() { + if (paramMap == null) { + paramMap = new HashMap<String, Object>(); + } + return paramMap; + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpIndexAccessParameters.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpIndexAccessParameters.java b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpIndexAccessParameters.java new file mode 100644 index 0000000..3618cae --- /dev/null +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/NoOpIndexAccessParameters.java @@ -0,0 +1,48 @@ +/* + * 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.common.impls; + +import java.util.Map; + +import org.apache.hyracks.storage.common.IIndexAccessParameters; +import org.apache.hyracks.storage.common.IModificationOperationCallback; +import org.apache.hyracks.storage.common.ISearchOperationCallback; + +public class NoOpIndexAccessParameters implements IIndexAccessParameters { + public static final NoOpIndexAccessParameters INSTANCE = new NoOpIndexAccessParameters(); + + private NoOpIndexAccessParameters() { + } + + @Override + public IModificationOperationCallback getModificationCallback() { + return NoOpOperationCallback.INSTANCE; + } + + @Override + public ISearchOperationCallback getSearchOperationCallback() { + return NoOpOperationCallback.INSTANCE; + } + + @Override + public Map<String, Object> getParameters() { + return null; + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java index 24f513a..b0c5094 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java @@ -55,9 +55,9 @@ 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.LSMTreeIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.impls.LSMTreeIndexAccessor.ICursorFactory; +import org.apache.hyracks.storage.common.IIndexAccessParameters; 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; @@ -487,9 +487,8 @@ public class ExternalBTree extends LSMBTree implements ITwoPCIndex { // The accessor for disk only indexes don't use modification callback and always carry the target index version with them @Override - public ILSMIndexAccessor createAccessor(IModificationOperationCallback modificationCallback, - ISearchOperationCallback searchCallback) { - ExternalBTreeOpContext opCtx = createOpContext(searchCallback, version); + public ILSMIndexAccessor createAccessor(IIndexAccessParameters iap) { + ExternalBTreeOpContext opCtx = createOpContext(iap.getSearchOperationCallback(), version); return new LSMTreeIndexAccessor(getLsmHarness(), opCtx, cursorFactory); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddy.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddy.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddy.java index 55090ad..1680693 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddy.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTreeWithBuddy.java @@ -58,6 +58,7 @@ import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexOperationC 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.LSMTreeIndexAccessor; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.apache.hyracks.storage.common.IIndexBulkLoader; import org.apache.hyracks.storage.common.IIndexCursor; import org.apache.hyracks.storage.common.IModificationOperationCallback; @@ -179,9 +180,8 @@ public class ExternalBTreeWithBuddy extends AbstractLSMIndex implements ITreeInd } @Override - public ILSMIndexAccessor createAccessor(IModificationOperationCallback modificationCallback, - ISearchOperationCallback searchCallback) throws HyracksDataException { - return new LSMTreeIndexAccessor(getLsmHarness(), createOpContext(searchCallback, version), + public ILSMIndexAccessor createAccessor(IIndexAccessParameters iap) throws HyracksDataException { + return new LSMTreeIndexAccessor(getLsmHarness(), createOpContext(iap.getSearchOperationCallback(), version), ctx -> new LSMBTreeWithBuddySearchCursor(ctx, buddyBTreeFields)); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java index f6942b0..91eb698 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java @@ -37,7 +37,7 @@ import org.apache.hyracks.storage.am.common.api.IPageManager; import org.apache.hyracks.storage.am.common.api.ITreeIndex; 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.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.lsm.btree.tuples.LSMBTreeTupleReference; import org.apache.hyracks.storage.am.lsm.common.api.AbstractLSMWithBloomFilterDiskComponent; import org.apache.hyracks.storage.am.lsm.common.api.IComponentFilterHelper; @@ -62,6 +62,7 @@ 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.LSMTreeIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.impls.LSMTreeIndexAccessor.ICursorFactory; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.apache.hyracks.storage.common.IIndexAccessor; import org.apache.hyracks.storage.common.IIndexCursor; import org.apache.hyracks.storage.common.IModificationOperationCallback; @@ -246,8 +247,7 @@ public class LSMBTree extends AbstractLSMIndex implements ITreeIndex { public ILSMDiskComponent doFlush(ILSMIOOperation operation) throws HyracksDataException { LSMBTreeFlushOperation flushOp = (LSMBTreeFlushOperation) operation; LSMBTreeMemoryComponent flushingComponent = (LSMBTreeMemoryComponent) flushOp.getFlushingComponent(); - IIndexAccessor accessor = flushingComponent.getIndex().createAccessor(NoOpOperationCallback.INSTANCE, - NoOpOperationCallback.INSTANCE); + IIndexAccessor accessor = flushingComponent.getIndex().createAccessor(NoOpIndexAccessParameters.INSTANCE); RangePredicate nullPred = new RangePredicate(null, null, true, true, null, null); long numElements = 0L; @@ -371,9 +371,8 @@ public class LSMBTree extends AbstractLSMIndex implements ITreeIndex { } @Override - public ILSMIndexAccessor createAccessor(IModificationOperationCallback modificationCallback, - ISearchOperationCallback searchCallback) { - return createAccessor(createOpContext(modificationCallback, searchCallback)); + public ILSMIndexAccessor createAccessor(IIndexAccessParameters iap) { + return createAccessor(createOpContext(iap.getModificationCallback(), iap.getSearchOperationCallback())); } public ILSMIndexAccessor createAccessor(AbstractLSMIndexOperationContext opCtx) { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeDiskComponentScanCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeDiskComponentScanCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeDiskComponentScanCursor.java index 02e481c..2f77504 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeDiskComponentScanCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeDiskComponentScanCursor.java @@ -30,7 +30,7 @@ import org.apache.hyracks.storage.am.btree.api.IBTreeLeafFrame; 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.BTreeRangeSearchCursor; -import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.common.tuples.PermutingTupleReference; import org.apache.hyracks.storage.am.lsm.btree.tuples.LSMBTreeTupleReference; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; @@ -78,7 +78,7 @@ public class LSMBTreeDiskComponentScanCursor extends LSMIndexSearchCursor { rangeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false); BTree btree = (BTree) component.getIndex(); - btreeAccessors[i] = btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + btreeAccessors[i] = btree.createAccessor(NoOpIndexAccessParameters.INSTANCE); btreeAccessors[i].search(rangeCursors[i], searchPred); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java index 08ba7af..951ec81 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeOpContext.java @@ -28,11 +28,13 @@ import org.apache.hyracks.storage.am.btree.impls.BTreeOpContext; import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor; import org.apache.hyracks.storage.am.btree.impls.RangePredicate; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameFactory; +import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters; 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.ILSMHarness; import org.apache.hyracks.storage.am.lsm.common.api.ILSMMemoryComponent; import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndexOperationContext; +import org.apache.hyracks.storage.common.IIndexAccessParameters; import org.apache.hyracks.storage.common.IModificationOperationCallback; import org.apache.hyracks.storage.common.ISearchOperationCallback; import org.apache.hyracks.storage.common.MultiComparator; @@ -86,9 +88,9 @@ public final class LSMBTreeOpContext extends AbstractLSMIndexOperationContext { mutableBTreeAccessors[i] = mutableBTrees[i].createAccessor(modificationCallback, NoOpOperationCallback.INSTANCE, allFields); } else { - - mutableBTreeAccessors[i] = - mutableBTrees[i].createAccessor(modificationCallback, NoOpOperationCallback.INSTANCE); + IIndexAccessParameters iap = + new IndexAccessParameters(modificationCallback, NoOpOperationCallback.INSTANCE); + mutableBTreeAccessors[i] = mutableBTrees[i].createAccessor(iap); } mutableBTreeOpCtxs[i] = mutableBTreeAccessors[i].getOpContext(); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java index 24a78a6..b84a172 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreePointSearchCursor.java @@ -30,6 +30,7 @@ import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor; import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor; import org.apache.hyracks.storage.am.btree.impls.RangePredicate; import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent.LSMComponentType; @@ -199,8 +200,7 @@ public class LSMBTreePointSearchCursor implements ITreeIndexCursor { bloomFilters[i] = ((LSMBTreeWithBloomFilterDiskComponent) component).getBloomFilter(); } if (btreeAccessors[i] == null) { - btreeAccessors[i] = - btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + btreeAccessors[i] = btree.createAccessor(NoOpIndexAccessParameters.INSTANCE); } else { // re-use btreeAccessors[i].reset(btree, NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeRangeSearchCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeRangeSearchCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeRangeSearchCursor.java index 7f93b62..6cc8fbb 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeRangeSearchCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeRangeSearchCursor.java @@ -31,6 +31,7 @@ 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.BTreeRangeSearchCursor; import org.apache.hyracks.storage.am.btree.impls.RangePredicate; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent.LSMComponentType; @@ -237,8 +238,7 @@ public class LSMBTreeRangeSearchCursor extends LSMIndexSearchCursor { } if (btreeAccessors[i] == null) { - btreeAccessors[i] = - btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + btreeAccessors[i] = btree.createAccessor(NoOpIndexAccessParameters.INSTANCE); } else { // re-use btreeAccessors[i].reset(btree, NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java index 2d2d184..f619a52 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyAbstractCursor.java @@ -29,6 +29,7 @@ import org.apache.hyracks.storage.am.btree.impls.BTree.BTreeAccessor; import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor; import org.apache.hyracks.storage.am.btree.impls.RangePredicate; import org.apache.hyracks.storage.am.common.api.ITreeIndexCursor; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent.LSMComponentType; @@ -125,10 +126,8 @@ public abstract class LSMBTreeWithBuddyAbstractCursor implements ITreeIndexCurso IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getBTreeLeafFrameFactory().createFrame(); if (btreeAccessors[i] == null) { btreeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false); - btreeAccessors[i] = - btree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); - buddyBtreeAccessors[i] = - buddyBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + btreeAccessors[i] = btree.createAccessor(NoOpIndexAccessParameters.INSTANCE); + buddyBtreeAccessors[i] = buddyBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); } else { btreeCursors[i].reset(); btreeAccessors[i].reset(btree, NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java index 061cad5..b2f5327 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBuddyBTreeMergeCursor.java @@ -24,7 +24,7 @@ import org.apache.hyracks.storage.am.btree.impls.BTree; import org.apache.hyracks.storage.am.btree.impls.BTreeRangeSearchCursor; import org.apache.hyracks.storage.am.btree.impls.RangePredicate; import org.apache.hyracks.storage.am.common.api.ITreeIndexAccessor; -import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext; import org.apache.hyracks.storage.am.lsm.common.impls.LSMIndexSearchCursor; @@ -63,8 +63,7 @@ public class LSMBuddyBTreeMergeCursor extends LSMIndexSearchCursor { IBTreeLeafFrame leafFrame = (IBTreeLeafFrame) lsmInitialState.getBuddyBTreeLeafFrameFactory().createFrame(); rangeCursors[i] = new BTreeRangeSearchCursor(leafFrame, false); BTree buddyBtree = ((LSMBTreeWithBuddyDiskComponent) component).getBuddyIndex(); - btreeAccessors[i] = - buddyBtree.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + btreeAccessors[i] = buddyBtree.createAccessor(NoOpIndexAccessParameters.INSTANCE); btreeAccessors[i].search(rangeCursors[i], btreePredicate); } setPriorityQueueComparator(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndex.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndex.java index e4a9436..ad8fa68 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndex.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndex.java @@ -27,9 +27,8 @@ import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.storage.am.common.api.IIndexOperationContext; import org.apache.hyracks.storage.am.lsm.common.impls.LSMHarness; import org.apache.hyracks.storage.common.IIndex; +import org.apache.hyracks.storage.common.IIndexAccessParameters; 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; /** @@ -45,8 +44,7 @@ public interface ILSMIndex extends IIndex { void deactivate(boolean flush) throws HyracksDataException; @Override - ILSMIndexAccessor createAccessor(IModificationOperationCallback modificationCallback, - ISearchOperationCallback searchCallback) throws HyracksDataException; + ILSMIndexAccessor createAccessor(IIndexAccessParameters iap) throws HyracksDataException; ILSMOperationTracker getOperationTracker(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexCompactOperatorNodePushable.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexCompactOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexCompactOperatorNodePushable.java index 2860a8f..4e8cf71 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexCompactOperatorNodePushable.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/dataflow/LSMIndexCompactOperatorNodePushable.java @@ -25,7 +25,7 @@ import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.dataflow.std.base.AbstractOperatorNodePushable; import org.apache.hyracks.storage.am.common.api.IIndexDataflowHelper; import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; -import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor; @@ -56,8 +56,7 @@ public class LSMIndexCompactOperatorNodePushable extends AbstractOperatorNodePus public void initialize() throws HyracksDataException { indexHelper.open(); ILSMIndex index = (ILSMIndex) indexHelper.getIndexInstance(); - ILSMIndexAccessor accessor = - index.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor accessor = index.createAccessor(NoOpIndexAccessParameters.INSTANCE); accessor.scheduleFullMerge(index.getIOOperationCallback()); } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndex.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndex.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndex.java index 50c7720..0019e09 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndex.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMIndex.java @@ -37,6 +37,7 @@ import org.apache.hyracks.api.replication.IReplicationJob.ReplicationExecutionTy import org.apache.hyracks.api.replication.IReplicationJob.ReplicationOperation; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.storage.am.common.impls.AbstractSearchPredicate; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; 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.IComponentFilterHelper; @@ -214,7 +215,7 @@ public abstract class AbstractLSMIndex implements ILSMIndex { protected void flushMemoryComponent() throws HyracksDataException { BlockingIOOperationCallbackWrapper cb = new BlockingIOOperationCallbackWrapper(ioOpCallback); - ILSMIndexAccessor accessor = createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor accessor = createAccessor(NoOpIndexAccessParameters.INSTANCE); accessor.scheduleFlush(cb); try { cb.waitForIO(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/40cff7be/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ConstantMergePolicy.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ConstantMergePolicy.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ConstantMergePolicy.java index 847b882..13911ef 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ConstantMergePolicy.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ConstantMergePolicy.java @@ -23,6 +23,8 @@ import java.util.List; import java.util.Map; import org.apache.hyracks.api.exceptions.HyracksDataException; +import org.apache.hyracks.storage.am.common.impls.IndexAccessParameters; +import org.apache.hyracks.storage.am.common.impls.NoOpIndexAccessParameters; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallback; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent.ComponentState; @@ -30,6 +32,7 @@ import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor; import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicy; +import org.apache.hyracks.storage.common.IIndexAccessParameters; public class ConstantMergePolicy implements ILSMMergePolicy { private int numComponents; @@ -43,12 +46,12 @@ public class ConstantMergePolicy implements ILSMMergePolicy { } if (fullMergeIsRequested) { - ILSMIndexAccessor accessor = - index.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + IIndexAccessParameters iap = + new IndexAccessParameters(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor accessor = index.createAccessor(iap); accessor.scheduleFullMerge(index.getIOOperationCallback()); } else if (immutableComponents.size() >= numComponents) { - ILSMIndexAccessor accessor = - index.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor accessor = index.createAccessor(NoOpIndexAccessParameters.INSTANCE); accessor.scheduleMerge(index.getIOOperationCallback(), immutableComponents); } } @@ -104,8 +107,7 @@ public class ConstantMergePolicy implements ILSMMergePolicy { if (!areComponentsMergable(immutableComponents)) { throw new IllegalStateException(); } - ILSMIndexAccessor accessor = - index.createAccessor(NoOpOperationCallback.INSTANCE, NoOpOperationCallback.INSTANCE); + ILSMIndexAccessor accessor = index.createAccessor(NoOpIndexAccessParameters.INSTANCE); accessor.scheduleMerge(index.getIOOperationCallback(), immutableComponents); return true; }
