[NO ISSUE][STO] Add a callback on recycling of memory components
- user model changes: no
- storage format changes: no
- interface change: yes
- ILSMIOOperationCallbackFactory.createIoOpCallback now takes
the ILSMIndex as a parameter.
- Remove ILSMIOOperationCallback.setNumOfMutableComponents
The callback can find out the number of mutable components
on instantiation since the lsm index is now passed.
- ILSMIOOperationCallback.allocated was added.
It gets called whenever a memory component is allocated.
- ILSMIOOperationCallback.recycled was added.
It gets called whenever a memory component is recycled.
- ILSMIndex.hasMemoryComponent is replaced with
ILSMIndex.getNumberOfMemoryComponents
Change-Id: I578ffd7ef17784034c94f3c0d23cd5094e39f6e0
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2126
Sonar-Qube: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Contrib: Jenkins <[email protected]>
Integration-Tests: Jenkins <[email protected]>
Reviewed-by: Murtadha Hubail <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/e32cb676
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/e32cb676
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/e32cb676
Branch: refs/heads/master
Commit: e32cb6765387061baa3ff5cc6ff14b65b6533dbd
Parents: 76d24d4
Author: Abdullah Alamoudi <[email protected]>
Authored: Mon Nov 6 11:30:25 2017 -0800
Committer: abdullah alamoudi <[email protected]>
Committed: Mon Nov 6 15:14:57 2017 -0800
----------------------------------------------------------------------
.../TestLsmBtreeIoOpCallbackFactory.java | 9 +++--
.../common/context/DatasetLifecycleManager.java | 15 ++++----
.../asterix/common/context/DatasetResource.java | 11 +++---
.../AbstractLSMIOOperationCallback.java | 36 +++++++++++++-------
.../LSMBTreeIOOperationCallback.java | 5 +--
.../LSMBTreeIOOperationCallbackFactory.java | 5 +--
.../LSMBTreeWithBuddyIOOperationCallback.java | 5 +++
...TreeWithBuddyIOOperationCallbackFactory.java | 5 +--
.../LSMInvertedIndexIOOperationCallback.java | 5 +--
...InvertedIndexIOOperationCallbackFactory.java | 5 +--
.../LSMRTreeIOOperationCallback.java | 5 +--
.../LSMRTreeIOOperationCallbackFactory.java | 5 +--
.../LSMBTreeIOOperationCallbackTest.java | 11 +++---
...SMBTreeWithBuddyIOOperationCallbackTest.java | 11 +++---
...LSMInvertedIndexIOOperationCallbackTest.java | 11 +++---
.../LSMRTreeIOOperationCallbackTest.java | 11 +++---
.../am/common/impls/AbstractTreeIndex.java | 5 ---
.../dataflow/ExternalBTreeLocalResource.java | 2 +-
.../ExternalBTreeWithBuddyLocalResource.java | 2 +-
.../btree/dataflow/LSMBTreeLocalResource.java | 4 +--
.../am/lsm/btree/impls/ExternalBTree.java | 12 +++----
.../lsm/btree/impls/ExternalBTreeWithBuddy.java | 10 ++----
.../storage/am/lsm/btree/impls/LSMBTree.java | 20 +++++------
.../btree/impls/LSMBTreeMemoryComponent.java | 5 +--
.../impls/LSMBTreeWithBuddyMemoryComponent.java | 9 ++---
.../am/lsm/btree/utils/LSMBTreeUtil.java | 19 ++++++-----
.../AbstractLSMWithBuddyMemoryComponent.java | 6 ++--
.../lsm/common/api/ILSMIOOperationCallback.java | 16 ++++++++-
.../api/ILSMIOOperationCallbackFactory.java | 2 +-
.../storage/am/lsm/common/api/ILSMIndex.java | 5 +++
.../lsm/common/impls/AbstractLSMComponent.java | 4 ++-
.../common/impls/AbstractLSMDiskComponent.java | 4 +--
.../am/lsm/common/impls/AbstractLSMIndex.java | 17 ++++-----
.../impls/AbstractLSMMemoryComponent.java | 6 ++--
.../BlockingIOOperationCallbackWrapper.java | 10 ++++--
.../storage/am/lsm/common/impls/LSMHarness.java | 13 ++++---
.../impls/NoOpIOOperationCallbackFactory.java | 12 +++++--
.../common/impls/StubIOOperationCallback.java | 20 +++++++----
.../lsm/common/impls/ThreadCountingTracker.java | 2 +-
.../dataflow/LSMInvertedIndexLocalResource.java | 12 +++----
.../invertedindex/impls/LSMInvertedIndex.java | 21 ++++++------
.../impls/LSMInvertedIndexMemoryComponent.java | 8 ++---
.../impls/PartitionedLSMInvertedIndex.java | 14 ++++----
.../inmemory/InMemoryInvertedIndex.java | 5 ---
.../ondisk/OnDiskInvertedIndex.java | 5 ---
.../invertedindex/util/InvertedIndexUtils.java | 22 ++++++------
.../dataflow/ExternalRTreeLocalResource.java | 2 +-
.../rtree/dataflow/LSMRTreeLocalResource.java | 4 +--
.../LSMRTreeWithAntiMatterLocalResource.java | 4 +--
.../am/lsm/rtree/impls/AbstractLSMRTree.java | 14 ++++----
.../am/lsm/rtree/impls/ExternalRTree.java | 13 +++----
.../storage/am/lsm/rtree/impls/LSMRTree.java | 16 +++++----
.../rtree/impls/LSMRTreeMemoryComponent.java | 8 ++---
.../impls/LSMRTreeWithAntiMatterTuples.java | 8 ++---
.../am/lsm/rtree/utils/LSMRTreeUtils.java | 27 ++++++++-------
.../apache/hyracks/storage/common/IIndex.java | 7 ++--
.../am/lsm/btree/LSMBTreeBulkLoadTest.java | 4 +--
.../am/lsm/btree/LSMBTreeDeleteTest.java | 4 +--
.../am/lsm/btree/LSMBTreeExamplesTest.java | 2 +-
.../am/lsm/btree/LSMBTreeFileManagerTest.java | 8 ++---
.../am/lsm/btree/LSMBTreeFilterMergeTest.java | 4 +--
.../btree/LSMBTreeFilterMergeTestDriver.java | 3 +-
.../am/lsm/btree/LSMBTreeInsertTest.java | 4 +--
.../am/lsm/btree/LSMBTreeLifecycleTest.java | 4 +--
.../storage/am/lsm/btree/LSMBTreeMergeTest.java | 4 +--
.../am/lsm/btree/LSMBTreeMergeTestDriver.java | 3 +-
...MBTreeModificationOperationCallbackTest.java | 10 +++---
.../am/lsm/btree/LSMBTreeMultiBulkLoadTest.java | 4 +--
.../btree/LSMBTreeScanDiskComponentsTest.java | 15 ++++----
.../LSMBTreeSearchOperationCallbackTest.java | 2 +-
...TreeUpdateInPlaceScanDiskComponentsTest.java | 11 +++---
.../am/lsm/btree/LSMBTreeUpdateInPlaceTest.java | 9 +++--
.../am/lsm/btree/LSMBTreeUpdateTest.java | 4 +--
.../storage/am/lsm/btree/impl/TestLsmBtree.java | 9 ++---
.../btree/impl/TestLsmBtreeLocalResource.java | 4 +--
.../am/lsm/btree/impl/TestLsmBtreeUtil.java | 6 ++--
.../multithread/LSMBTreeMultiThreadTest.java | 4 +--
.../btree/multithread/LSMBTreeTestWorker.java | 5 +--
.../am/lsm/btree/perf/LSMTreeRunner.java | 6 ++--
.../am/lsm/btree/util/LSMBTreeTestContext.java | 10 +++---
.../am/lsm/btree/util/LSMBTreeTestHarness.java | 10 +++---
.../LSMInvertedIndexMergeTest.java | 3 +-
.../PartitionedLSMInvertedIndexMergeTest.java | 3 +-
.../common/LSMInvertedIndexTestHarness.java | 10 +++---
.../multithread/LSMInvertedIndexTestWorker.java | 4 +--
.../util/LSMInvertedIndexTestContext.java | 14 ++++----
.../am/lsm/rtree/LSMRTreeBulkLoadTest.java | 2 +-
.../am/lsm/rtree/LSMRTreeDeleteTest.java | 2 +-
.../am/lsm/rtree/LSMRTreeExamplesTest.java | 2 +-
.../am/lsm/rtree/LSMRTreeInsertTest.java | 2 +-
.../am/lsm/rtree/LSMRTreeLifecycleTest.java | 2 +-
.../storage/am/lsm/rtree/LSMRTreeMergeTest.java | 2 +-
.../am/lsm/rtree/LSMRTreeMergeTestDriver.java | 3 +-
...SMRTreeWithAntiMatterTuplesBulkLoadTest.java | 2 +-
.../LSMRTreeWithAntiMatterTuplesDeleteTest.java | 2 +-
...SMRTreeWithAntiMatterTuplesExamplesTest.java | 2 +-
.../LSMRTreeWithAntiMatterTuplesInsertTest.java | 2 +-
...MRTreeWithAntiMatterTuplesLifecycleTest.java | 2 +-
.../LSMRTreeWithAntiMatterTuplesMergeTest.java | 2 +-
.../multithread/LSMRTreeMultiThreadTest.java | 2 +-
.../rtree/multithread/LSMRTreeTestWorker.java | 4 +--
...TreeWithAntiMatterTuplesMultiThreadTest.java | 2 +-
.../LSMRTreeWithAntiMatterTuplesTestWorker.java | 3 +-
.../am/lsm/rtree/util/LSMRTreeTestContext.java | 6 ++--
.../am/lsm/rtree/util/LSMRTreeTestHarness.java | 10 +++---
...LSMRTreeWithAntiMatterTuplesTestContext.java | 9 ++---
106 files changed, 420 insertions(+), 376 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBtreeIoOpCallbackFactory.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBtreeIoOpCallbackFactory.java
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBtreeIoOpCallbackFactory.java
index 1bec41e..327c66e 100644
---
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBtreeIoOpCallbackFactory.java
+++
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/TestLsmBtreeIoOpCallbackFactory.java
@@ -22,6 +22,7 @@ import
org.apache.asterix.common.ioopcallbacks.LSMBTreeIOOperationCallback;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
import
org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallbackFactory;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
import org.apache.hyracks.storage.am.lsm.common.impls.EmptyComponent;
@@ -41,7 +42,7 @@ public class TestLsmBtreeIoOpCallbackFactory implements
ILSMIOOperationCallbackF
}
@Override
- public synchronized ILSMIOOperationCallback createIoOpCallback() {
+ public synchronized ILSMIOOperationCallback createIoOpCallback(ILSMIndex
index) {
completedFlushes = 0;
completedMerges = 0;
rollbackFlushes = 0;
@@ -49,7 +50,7 @@ public class TestLsmBtreeIoOpCallbackFactory implements
ILSMIOOperationCallbackF
// Whenever this is called, it resets the counter
// However, the counters for the failed operations are never reset
since we expect them
// To be always 0
- return new TestLsmBtreeIoOpCallback();
+ return new TestLsmBtreeIoOpCallback(index);
}
public int getTotalFlushes() {
@@ -89,6 +90,10 @@ public class TestLsmBtreeIoOpCallbackFactory implements
ILSMIOOperationCallbackF
}
public class TestLsmBtreeIoOpCallback extends LSMBTreeIOOperationCallback {
+ public TestLsmBtreeIoOpCallback(ILSMIndex index) {
+ super(index);
+ }
+
@Override
public void afterFinalize(LSMOperationType opType, ILSMDiskComponent
newComponent) {
super.afterFinalize(opType, newComponent);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/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..c4cd791 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
@@ -101,7 +101,7 @@ public class DatasetLifecycleManager implements
IDatasetLifecycleManager, ILifeC
if (datasetResource == null) {
datasetResource = getDatasetLifecycle(did);
}
- datasetResource.register(resource, index);
+ datasetResource.register(resource, (ILSMIndex) index);
}
private int getDIDfromResourcePath(String resourcePath) throws
HyracksDataException {
@@ -141,8 +141,8 @@ public class DatasetLifecycleManager implements
IDatasetLifecycleManager, ILifeC
resourcePath, iInfo.getReferenceCount(),
opTracker.getNumActiveOperations());
LOGGER.severe(logMsg);
}
- throw HyracksDataException
- .create(ErrorCode.CANNOT_DROP_IN_USE_INDEX,
StoragePathUtil.getIndexNameFromPath(resourcePath));
+ throw
HyracksDataException.create(ErrorCode.CANNOT_DROP_IN_USE_INDEX,
+ StoragePathUtil.getIndexNameFromPath(resourcePath));
}
// TODO: use fine-grained counters, one for each index instead of a
single counter per dataset.
@@ -204,8 +204,8 @@ public class DatasetLifecycleManager implements
IDatasetLifecycleManager, ILifeC
for (DatasetResource dsr : datasetsResources) {
PrimaryIndexOperationTracker opTracker = dsr.getOpTracker();
if (opTracker != null && opTracker.getNumActiveOperations() == 0
- && dsr.getDatasetInfo().getReferenceCount() == 0 &&
dsr.getDatasetInfo().isOpen() && !dsr
- .isMetadataDataset()) {
+ && dsr.getDatasetInfo().getReferenceCount() == 0 &&
dsr.getDatasetInfo().isOpen()
+ && !dsr.isMetadataDataset()) {
closeDataset(dsr.getDatasetInfo());
LOGGER.info(() -> "Evicted Dataset" + dsr.getDatasetID());
return true;
@@ -235,9 +235,8 @@ public class DatasetLifecycleManager implements
IDatasetLifecycleManager, ILifeC
if (dsr == null) {
DatasetInfo dsInfo = new DatasetInfo(did);
PrimaryIndexOperationTracker opTracker = new
PrimaryIndexOperationTracker(did, logManager, dsInfo);
- DatasetVirtualBufferCaches vbcs =
- new DatasetVirtualBufferCaches(did, storageProperties,
memoryManager.getNumPages(did),
- numPartitions);
+ DatasetVirtualBufferCaches vbcs = new
DatasetVirtualBufferCaches(did, storageProperties,
+ memoryManager.getNumPages(did), numPartitions);
dsr = new DatasetResource(dsInfo, opTracker, vbcs);
datasets.put(did, dsr);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
index b59fe6a..79ae1da 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
@@ -24,7 +24,6 @@ import
org.apache.asterix.common.dataflow.DatasetLocalResource;
import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
-import org.apache.hyracks.storage.common.IIndex;
import org.apache.hyracks.storage.common.LocalResource;
/**
@@ -88,14 +87,14 @@ public class DatasetResource implements
Comparable<DatasetResource> {
return (iInfo == null) ? null : iInfo.getIndex();
}
- public void register(LocalResource resource, IIndex index) throws
HyracksDataException {
+ public void register(LocalResource resource, ILSMIndex index) throws
HyracksDataException {
long resourceID = resource.getId();
if (!datasetInfo.isRegistered()) {
synchronized (datasetInfo) {
if (!datasetInfo.isRegistered()) {
- datasetInfo.setExternal(!index.hasMemoryComponents());
+
datasetInfo.setExternal(index.getNumberOfAllMemoryComponents() == 0);
datasetInfo.setRegistered(true);
- datasetInfo.setDurable(((ILSMIndex) index).isDurable());
+ datasetInfo.setDurable(index.isDurable());
}
}
}
@@ -105,8 +104,8 @@ public class DatasetResource implements
Comparable<DatasetResource> {
if (index == null) {
throw new HyracksDataException("Attempt to register a null index");
}
- datasetInfo.getIndexes().put(resourceID, new IndexInfo((ILSMIndex)
index, datasetInfo.getDatasetID(),
- resourceID, ((DatasetLocalResource)
resource.getResource()).getPartition()));
+ datasetInfo.getIndexes().put(resourceID, new IndexInfo(index,
datasetInfo.getDatasetID(), resourceID,
+ ((DatasetLocalResource)
resource.getResource()).getPartition()));
}
public DatasetInfo getDatasetInfo() {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java
index 3138986..5fcbac9 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/AbstractLSMIOOperationCallback.java
@@ -31,6 +31,8 @@ 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.ILSMDiskComponentId;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMMemoryComponent;
import org.apache.hyracks.storage.am.lsm.common.api.LSMOperationType;
import org.apache.hyracks.storage.am.lsm.common.impls.DiskComponentMetadata;
import org.apache.hyracks.storage.am.lsm.common.impls.LSMDiskComponentId;
@@ -38,25 +40,25 @@ import
org.apache.hyracks.storage.am.lsm.common.util.ComponentUtils;
// A single LSMIOOperationCallback per LSM index used to perform actions
around Flush and Merge operations
public abstract class AbstractLSMIOOperationCallback implements
ILSMIOOperationCallback {
- private static final Logger logger =
Logger.getLogger(AbstractLSMIOOperationCallback.class.getName());
-
+ private static final Logger LOGGER =
Logger.getLogger(AbstractLSMIOOperationCallback.class.getName());
public static final MutableArrayValueReference LSN_KEY = new
MutableArrayValueReference("LSN".getBytes());
public static final long INVALID = -1L;
- // First LSN per mutable component
- protected long[] firstLSNs;
+ protected final ILSMIndex lsmIndex;
+ // First LSN per mutable component. TODO: move from hyracks to asterixdb
+ protected final long[] firstLSNs;
// A boolean array to keep track of flush operations
- protected boolean[] flushRequested;
- // I think this was meant to be mutableLastLSNs
- // protected long[] immutableLastLSNs;
- protected long[] mutableLastLSNs;
+ protected final boolean[] flushRequested;
+ // TODO: move from hyracks to asterixdb
+ protected final long[] mutableLastLSNs;
// Index of the currently flushing or next to be flushed component
protected int readIndex;
// Index of the currently being written to component
protected int writeIndex;
- @Override
- public void setNumOfMutableComponents(int count) {
+ public AbstractLSMIOOperationCallback(ILSMIndex lsmIndex) {
+ this.lsmIndex = lsmIndex;
+ int count = lsmIndex.getNumberOfAllMemoryComponents();
mutableLastLSNs = new long[count];
firstLSNs = new long[count];
flushRequested = new boolean[count];
@@ -65,7 +67,7 @@ public abstract class AbstractLSMIOOperationCallback
implements ILSMIOOperationC
}
@Override
- public void beforeOperation(LSMOperationType opType) {
+ public void beforeOperation(LSMOperationType opType) throws
HyracksDataException {
if (opType == LSMOperationType.FLUSH) {
/*
* This method was called on the scheduleFlush operation.
@@ -118,7 +120,7 @@ public abstract class AbstractLSMIOOperationCallback
implements ILSMIOOperationC
//and return the LSN for the flushed component
long id = getComponentLSN(null);
if (id == 0) {
- logger.log(Level.WARNING, "Flushing a memory component without
setting the LSN");
+ LOGGER.log(Level.WARNING, "Flushing a memory component without
setting the LSN");
id = ILSMDiskComponentId.NOT_FOUND;
}
return new LSMDiskComponentId(id, id);
@@ -216,6 +218,16 @@ public abstract class AbstractLSMIOOperationCallback
implements ILSMIOOperationC
return maxLSN;
}
+ @Override
+ public void recycled(ILSMMemoryComponent component) throws
HyracksDataException {
+ // No op
+ }
+
+ @Override
+ public void allocated(ILSMMemoryComponent component) throws
HyracksDataException {
+ // No op
+ }
+
/**
* @param component
* @param componentFilePath
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java
index 147bc10..c7fbb65 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallback.java
@@ -24,11 +24,12 @@ 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.btree.impls.LSMBTreeFileManager;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
public class LSMBTreeIOOperationCallback extends
AbstractLSMIOOperationCallback {
- public LSMBTreeIOOperationCallback() {
- super();
+ public LSMBTreeIOOperationCallback(ILSMIndex index) {
+ super(index);
}
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallbackFactory.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallbackFactory.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallbackFactory.java
index 322b5ef..e3abb6b 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallbackFactory.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeIOOperationCallbackFactory.java
@@ -21,6 +21,7 @@ package org.apache.asterix.common.ioopcallbacks;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
import
org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallbackFactory;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
public class LSMBTreeIOOperationCallbackFactory implements
ILSMIOOperationCallbackFactory {
@@ -32,7 +33,7 @@ public class LSMBTreeIOOperationCallbackFactory implements
ILSMIOOperationCallba
}
@Override
- public ILSMIOOperationCallback createIoOpCallback() {
- return new LSMBTreeIOOperationCallback();
+ public ILSMIOOperationCallback createIoOpCallback(ILSMIndex index) {
+ return new LSMBTreeIOOperationCallback(index);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java
index 5b6de6c..67d623a 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallback.java
@@ -23,9 +23,14 @@ 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.btree.impls.LSMBTreeWithBuddyFileManager;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponent;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
public class LSMBTreeWithBuddyIOOperationCallback extends
AbstractLSMIOOperationCallback {
+ public LSMBTreeWithBuddyIOOperationCallback(ILSMIndex lsmIndex) {
+ super(lsmIndex);
+ }
+
@Override
public long getComponentFileLSNOffset(ILSMDiskComponent diskComponent,
String diskComponentFilePath)
throws HyracksDataException {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackFactory.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackFactory.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackFactory.java
index 1055fa6..93f505c 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackFactory.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackFactory.java
@@ -20,6 +20,7 @@ package org.apache.asterix.common.ioopcallbacks;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
import
org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallbackFactory;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
public class LSMBTreeWithBuddyIOOperationCallbackFactory implements
ILSMIOOperationCallbackFactory {
@@ -32,7 +33,7 @@ public class LSMBTreeWithBuddyIOOperationCallbackFactory
implements ILSMIOOperat
}
@Override
- public ILSMIOOperationCallback createIoOpCallback() {
- return new LSMBTreeWithBuddyIOOperationCallback();
+ public ILSMIOOperationCallback createIoOpCallback(ILSMIndex index) {
+ return new LSMBTreeWithBuddyIOOperationCallback(index);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java
index 3c91a6a..2d27b78 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallback.java
@@ -22,13 +22,14 @@ package org.apache.asterix.common.ioopcallbacks;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.storage.am.common.api.IMetadataPageManager;
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.invertedindex.impls.LSMInvertedIndexDiskComponent;
import
org.apache.hyracks.storage.am.lsm.invertedindex.impls.LSMInvertedIndexFileManager;
public class LSMInvertedIndexIOOperationCallback extends
AbstractLSMIOOperationCallback {
- public LSMInvertedIndexIOOperationCallback() {
- super();
+ public LSMInvertedIndexIOOperationCallback(ILSMIndex index) {
+ super(index);
}
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallbackFactory.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallbackFactory.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallbackFactory.java
index 0fa0167..47a67b2 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallbackFactory.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMInvertedIndexIOOperationCallbackFactory.java
@@ -21,6 +21,7 @@ package org.apache.asterix.common.ioopcallbacks;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
import
org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallbackFactory;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
public class LSMInvertedIndexIOOperationCallbackFactory implements
ILSMIOOperationCallbackFactory {
@@ -33,7 +34,7 @@ public class LSMInvertedIndexIOOperationCallbackFactory
implements ILSMIOOperati
}
@Override
- public ILSMIOOperationCallback createIoOpCallback() {
- return new LSMInvertedIndexIOOperationCallback();
+ public ILSMIOOperationCallback createIoOpCallback(ILSMIndex index) {
+ return new LSMInvertedIndexIOOperationCallback(index);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java
index 063fe38..9ba99f9 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallback.java
@@ -22,13 +22,14 @@ package org.apache.asterix.common.ioopcallbacks;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.storage.am.common.api.IMetadataPageManager;
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.rtree.impls.LSMRTreeFileManager;
import org.apache.hyracks.storage.am.rtree.impls.RTree;
public class LSMRTreeIOOperationCallback extends
AbstractLSMIOOperationCallback {
- public LSMRTreeIOOperationCallback() {
- super();
+ public LSMRTreeIOOperationCallback(ILSMIndex index) {
+ super(index);
}
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallbackFactory.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallbackFactory.java
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallbackFactory.java
index 83db16a..14cf648 100644
---
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallbackFactory.java
+++
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/ioopcallbacks/LSMRTreeIOOperationCallbackFactory.java
@@ -21,6 +21,7 @@ package org.apache.asterix.common.ioopcallbacks;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
import
org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallbackFactory;
+import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
public class LSMRTreeIOOperationCallbackFactory implements
ILSMIOOperationCallbackFactory {
@@ -32,7 +33,7 @@ public class LSMRTreeIOOperationCallbackFactory implements
ILSMIOOperationCallba
}
@Override
- public ILSMIOOperationCallback createIoOpCallback() {
- return new LSMRTreeIOOperationCallback();
+ public ILSMIOOperationCallback createIoOpCallback(ILSMIndex index) {
+ return new LSMRTreeIOOperationCallback(index);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeIOOperationCallbackTest.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeIOOperationCallbackTest.java
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeIOOperationCallbackTest.java
index bc206e2..8d4cd51 100644
---
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeIOOperationCallbackTest.java
+++
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeIOOperationCallbackTest.java
@@ -21,6 +21,7 @@ package org.apache.asterix.test.ioopcallbacks;
import org.apache.asterix.common.ioopcallbacks.LSMBTreeIOOperationCallback;
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.LSMOperationType;
import org.junit.Assert;
import org.mockito.Mockito;
@@ -31,8 +32,9 @@ public class LSMBTreeIOOperationCallbackTest extends TestCase
{
public void testNormalSequence() {
try {
- LSMBTreeIOOperationCallback callback = new
LSMBTreeIOOperationCallback();
- callback.setNumOfMutableComponents(2);
+ ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class);
+
Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(2);
+ LSMBTreeIOOperationCallback callback = new
LSMBTreeIOOperationCallback(mockIndex);
//request to flush first component
callback.updateLastLSN(1);
@@ -54,8 +56,9 @@ public class LSMBTreeIOOperationCallbackTest extends TestCase
{
public void testOverWrittenLSN() {
try {
- LSMBTreeIOOperationCallback callback = new
LSMBTreeIOOperationCallback();
- callback.setNumOfMutableComponents(2);
+ ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class);
+
Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(2);
+ LSMBTreeIOOperationCallback callback = new
LSMBTreeIOOperationCallback(mockIndex);
//request to flush first component
callback.updateLastLSN(1);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackTest.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackTest.java
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackTest.java
index fe84d4a..ec1aba2 100644
---
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackTest.java
+++
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMBTreeWithBuddyIOOperationCallbackTest.java
@@ -21,6 +21,7 @@ package org.apache.asterix.test.ioopcallbacks;
import
org.apache.asterix.common.ioopcallbacks.LSMBTreeWithBuddyIOOperationCallback;
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.LSMOperationType;
import org.junit.Assert;
import org.mockito.Mockito;
@@ -31,8 +32,9 @@ public class LSMBTreeWithBuddyIOOperationCallbackTest extends
TestCase {
public void testNormalSequence() {
try {
- LSMBTreeWithBuddyIOOperationCallback callback = new
LSMBTreeWithBuddyIOOperationCallback();
- callback.setNumOfMutableComponents(2);
+ ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class);
+
Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(2);
+ LSMBTreeWithBuddyIOOperationCallback callback = new
LSMBTreeWithBuddyIOOperationCallback(mockIndex);
//request to flush first component
callback.updateLastLSN(1);
@@ -54,8 +56,9 @@ public class LSMBTreeWithBuddyIOOperationCallbackTest extends
TestCase {
public void testOverWrittenLSN() {
try {
- LSMBTreeWithBuddyIOOperationCallback callback = new
LSMBTreeWithBuddyIOOperationCallback();
- callback.setNumOfMutableComponents(2);
+ ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class);
+
Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(2);
+ LSMBTreeWithBuddyIOOperationCallback callback = new
LSMBTreeWithBuddyIOOperationCallback(mockIndex);
//request to flush first component
callback.updateLastLSN(1);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMInvertedIndexIOOperationCallbackTest.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMInvertedIndexIOOperationCallbackTest.java
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMInvertedIndexIOOperationCallbackTest.java
index 1f99db3..1711bc2 100644
---
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMInvertedIndexIOOperationCallbackTest.java
+++
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMInvertedIndexIOOperationCallbackTest.java
@@ -21,6 +21,7 @@ package org.apache.asterix.test.ioopcallbacks;
import
org.apache.asterix.common.ioopcallbacks.LSMInvertedIndexIOOperationCallback;
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.LSMOperationType;
import org.junit.Assert;
import org.mockito.Mockito;
@@ -31,8 +32,9 @@ public class LSMInvertedIndexIOOperationCallbackTest extends
TestCase {
public void testNormalSequence() {
try {
- LSMInvertedIndexIOOperationCallback callback = new
LSMInvertedIndexIOOperationCallback();
- callback.setNumOfMutableComponents(2);
+ ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class);
+
Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(2);
+ LSMInvertedIndexIOOperationCallback callback = new
LSMInvertedIndexIOOperationCallback(mockIndex);
//request to flush first component
callback.updateLastLSN(1);
@@ -54,8 +56,9 @@ public class LSMInvertedIndexIOOperationCallbackTest extends
TestCase {
public void testOverWrittenLSN() {
try {
- LSMInvertedIndexIOOperationCallback callback = new
LSMInvertedIndexIOOperationCallback();
- callback.setNumOfMutableComponents(2);
+ ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class);
+
Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(2);
+ LSMInvertedIndexIOOperationCallback callback = new
LSMInvertedIndexIOOperationCallback(mockIndex);
//request to flush first component
callback.updateLastLSN(1);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMRTreeIOOperationCallbackTest.java
----------------------------------------------------------------------
diff --git
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMRTreeIOOperationCallbackTest.java
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMRTreeIOOperationCallbackTest.java
index 38f7ee9..bb33f3d 100644
---
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMRTreeIOOperationCallbackTest.java
+++
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/ioopcallbacks/LSMRTreeIOOperationCallbackTest.java
@@ -21,6 +21,7 @@ package org.apache.asterix.test.ioopcallbacks;
import org.apache.asterix.common.ioopcallbacks.LSMRTreeIOOperationCallback;
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.LSMOperationType;
import org.junit.Assert;
import org.mockito.Mockito;
@@ -31,8 +32,9 @@ public class LSMRTreeIOOperationCallbackTest extends TestCase
{
public void testNormalSequence() {
try {
- LSMRTreeIOOperationCallback callback = new
LSMRTreeIOOperationCallback();
- callback.setNumOfMutableComponents(2);
+ ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class);
+
Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(2);
+ LSMRTreeIOOperationCallback callback = new
LSMRTreeIOOperationCallback(mockIndex);
//request to flush first component
callback.updateLastLSN(1);
@@ -54,8 +56,9 @@ public class LSMRTreeIOOperationCallbackTest extends TestCase
{
public void testOverWrittenLSN() {
try {
- LSMRTreeIOOperationCallback callback = new
LSMRTreeIOOperationCallback();
- callback.setNumOfMutableComponents(2);
+ ILSMIndex mockIndex = Mockito.mock(ILSMIndex.class);
+
Mockito.when(mockIndex.getNumberOfAllMemoryComponents()).thenReturn(2);
+ LSMRTreeIOOperationCallback callback = new
LSMRTreeIOOperationCallback(mockIndex);
//request to flush first component
callback.updateLastLSN(1);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/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..1221458 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
@@ -339,11 +339,6 @@ public abstract class AbstractTreeIndex implements
ITreeIndex {
}
@Override
- public boolean hasMemoryComponents() {
- return true;
- }
-
- @Override
public String toString() {
return "{\"class\":\"" + getClass().getSimpleName() + "\",\"file\":\""
+ file.getRelativePath() + "\"}";
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeLocalResource.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeLocalResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeLocalResource.java
index f1e9cf1..6083637 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeLocalResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeLocalResource.java
@@ -61,6 +61,6 @@ public class ExternalBTreeLocalResource extends
LSMBTreeLocalResource {
cmpFactories, bloomFilterKeyFields,
bloomFilterFalsePositiveRate,
mergePolicyFactory.createMergePolicy(mergePolicyProperties,
serviceCtx),
opTrackerProvider.getOperationTracker(serviceCtx),
ioSchedulerProvider.getIoScheduler(serviceCtx),
- ioOpCallbackFactory.createIoOpCallback(), durable,
metadataPageManagerFactory);
+ ioOpCallbackFactory, durable, metadataPageManagerFactory);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeWithBuddyLocalResource.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeWithBuddyLocalResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeWithBuddyLocalResource.java
index 317a479..04b63f9 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeWithBuddyLocalResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/ExternalBTreeWithBuddyLocalResource.java
@@ -64,6 +64,6 @@ public class ExternalBTreeWithBuddyLocalResource extends
LSMBTreeLocalResource {
typeTraits, cmpFactories, bloomFilterFalsePositiveRate,
mergePolicyFactory.createMergePolicy(mergePolicyProperties,
serviceCtx),
opTrackerProvider.getOperationTracker(serviceCtx),
ioSchedulerProvider.getIoScheduler(serviceCtx),
- ioOpCallbackFactory.createIoOpCallback(),
bloomFilterKeyFields, durable, metadataPageManagerFactory);
+ ioOpCallbackFactory, bloomFilterKeyFields, durable,
metadataPageManagerFactory);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeLocalResource.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeLocalResource.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeLocalResource.java
index dad56eb..dfa88da 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeLocalResource.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/dataflow/LSMBTreeLocalResource.java
@@ -76,7 +76,7 @@ public class LSMBTreeLocalResource extends LsmResource {
cmpFactories, bloomFilterKeyFields,
bloomFilterFalsePositiveRate,
mergePolicyFactory.createMergePolicy(mergePolicyProperties,
serviceCtx),
opTrackerProvider.getOperationTracker(serviceCtx),
ioSchedulerProvider.getIoScheduler(serviceCtx),
- ioOpCallbackFactory.createIoOpCallback(), isPrimary,
filterTypeTraits, filterCmpFactories, btreeFields,
- filterFields, durable, metadataPageManagerFactory,
updateAware, serviceCtx.getTracer());
+ ioOpCallbackFactory, isPrimary, filterTypeTraits,
filterCmpFactories, btreeFields, filterFields,
+ durable, metadataPageManagerFactory, updateAware,
serviceCtx.getTracer());
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/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..1ca4a6f 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
@@ -42,6 +42,7 @@ 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.ILSMIOOperationCallbackFactory;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexFileManager;
@@ -92,11 +93,11 @@ public class ExternalBTree extends LSMBTree implements
ITwoPCIndex {
IBufferCache bufferCache, ILSMIndexFileManager fileManager,
ILSMDiskComponentFactory componentFactory,
ILSMDiskComponentFactory bulkLoadComponentFactory,
ILSMDiskComponentFactory transactionComponentFactory,
double bloomFilterFalsePositiveRate, IBinaryComparatorFactory[]
cmpFactories, ILSMMergePolicy mergePolicy,
- ILSMOperationTracker opTracker, ILSMIOOperationScheduler
ioScheduler, ILSMIOOperationCallback ioOpCallback,
- boolean durable) {
+ ILSMOperationTracker opTracker, ILSMIOOperationScheduler
ioScheduler,
+ ILSMIOOperationCallbackFactory ioOpCallbackFactory, boolean
durable) {
super(ioManager, insertLeafFrameFactory, deleteLeafFrameFactory,
bufferCache, fileManager, componentFactory,
bulkLoadComponentFactory, bloomFilterFalsePositiveRate,
cmpFactories, mergePolicy, opTracker,
- ioScheduler, ioOpCallback, false, durable);
+ ioScheduler, ioOpCallbackFactory, false, durable);
this.transactionComponentFactory = transactionComponentFactory;
this.secondDiskComponents = new LinkedList<>();
this.interiorFrameFactory = interiorFrameFactory;
@@ -565,9 +566,4 @@ public class ExternalBTree extends LSMBTree implements
ITwoPCIndex {
public void recoverTransaction() throws HyracksDataException {
fileManager.recoverTransaction();
}
-
- @Override
- public boolean hasMemoryComponents() {
- return false;
- }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/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..57f956b 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
@@ -45,6 +45,7 @@ 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.ILSMIOOperationCallbackFactory;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexFileManager;
@@ -86,10 +87,10 @@ public class ExternalBTreeWithBuddy extends
AbstractLSMIndex implements ITreeInd
IBufferCache diskBufferCache, ILSMIndexFileManager fileManager,
ILSMDiskComponentFactory componentFactory,
ILSMDiskComponentFactory bulkLoadComponentFactory, double
bloomFilterFalsePositiveRate,
ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker,
ILSMIOOperationScheduler ioScheduler,
- ILSMIOOperationCallback ioOpCallback, IBinaryComparatorFactory[]
btreeCmpFactories,
+ ILSMIOOperationCallbackFactory ioOpCallbackFactory,
IBinaryComparatorFactory[] btreeCmpFactories,
IBinaryComparatorFactory[] buddyBtreeCmpFactories, int[]
buddyBTreeFields, boolean durable) {
super(ioManager, diskBufferCache, fileManager,
bloomFilterFalsePositiveRate, mergePolicy, opTracker,
- ioScheduler, ioOpCallback, componentFactory,
bulkLoadComponentFactory, durable);
+ ioScheduler, ioOpCallbackFactory, componentFactory,
bulkLoadComponentFactory, durable);
this.btreeCmpFactories = btreeCmpFactories;
this.buddyBtreeCmpFactories = buddyBtreeCmpFactories;
this.buddyBTreeFields = buddyBTreeFields;
@@ -622,11 +623,6 @@ public class ExternalBTreeWithBuddy extends
AbstractLSMIndex implements ITreeInd
}
@Override
- public boolean hasMemoryComponents() {
- return false;
- }
-
- @Override
public boolean isPrimaryIndex() {
return false;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/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..640e095 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
@@ -48,6 +48,7 @@ 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.ILSMIOOperationCallbackFactory;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexFileManager;
@@ -93,18 +94,18 @@ public class LSMBTree extends AbstractLSMIndex implements
ITreeIndex {
ILSMComponentFilterFrameFactory filterFrameFactory,
LSMComponentFilterManager filterManager,
double bloomFilterFalsePositiveRate, int fieldCount,
IBinaryComparatorFactory[] cmpFactories,
ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker,
ILSMIOOperationScheduler ioScheduler,
- ILSMIOOperationCallback ioOpCallback, boolean needKeyDupCheck,
int[] btreeFields, int[] filterFields,
- boolean durable, boolean updateAware, ITracer tracer) throws
HyracksDataException {
+ ILSMIOOperationCallbackFactory ioOpCallbackFactory, boolean
needKeyDupCheck, int[] btreeFields,
+ int[] filterFields, boolean durable, boolean updateAware, ITracer
tracer) throws HyracksDataException {
super(ioManager, virtualBufferCaches, diskBufferCache, fileManager,
bloomFilterFalsePositiveRate, mergePolicy,
- opTracker, ioScheduler, ioOpCallback, componentFactory,
bulkLoadComponentFactory, filterFrameFactory,
- filterManager, filterFields, durable, filterHelper,
btreeFields, tracer);
+ opTracker, ioScheduler, ioOpCallbackFactory, componentFactory,
bulkLoadComponentFactory,
+ filterFrameFactory, filterManager, filterFields, durable,
filterHelper, btreeFields, tracer);
this.insertLeafFrameFactory = insertLeafFrameFactory;
this.deleteLeafFrameFactory = deleteLeafFrameFactory;
this.cmpFactories = cmpFactories;
this.updateAware = updateAware;
int i = 0;
for (IVirtualBufferCache virtualBufferCache : virtualBufferCaches) {
- LSMBTreeMemoryComponent mutableComponent = new
LSMBTreeMemoryComponent(
+ LSMBTreeMemoryComponent mutableComponent = new
LSMBTreeMemoryComponent(this,
new BTree(virtualBufferCache, new
VirtualFreePageManager(virtualBufferCache), interiorFrameFactory,
insertLeafFrameFactory, cmpFactories, fieldCount,
ioManager.resolveAbsolutePath(fileManager.getBaseDir() + "_virtual_" + i)),
@@ -122,10 +123,10 @@ public class LSMBTree extends AbstractLSMIndex implements
ITreeIndex {
ITreeIndexFrameFactory deleteLeafFrameFactory, IBufferCache
bufferCache, ILSMIndexFileManager fileManager,
ILSMDiskComponentFactory componentFactory,
ILSMDiskComponentFactory bulkLoadComponentFactory,
double bloomFilterFalsePositiveRate, IBinaryComparatorFactory[]
cmpFactories, ILSMMergePolicy mergePolicy,
- ILSMOperationTracker opTracker, ILSMIOOperationScheduler
ioScheduler, ILSMIOOperationCallback ioOpCallback,
- boolean needKeyDupCheck, boolean durable) {
+ ILSMOperationTracker opTracker, ILSMIOOperationScheduler
ioScheduler,
+ ILSMIOOperationCallbackFactory ioOpCallbackFactory, boolean
needKeyDupCheck, boolean durable) {
super(ioManager, bufferCache, fileManager,
bloomFilterFalsePositiveRate, mergePolicy, opTracker, ioScheduler,
- ioOpCallback, componentFactory, bulkLoadComponentFactory,
durable);
+ ioOpCallbackFactory, componentFactory,
bulkLoadComponentFactory, durable);
this.insertLeafFrameFactory = insertLeafFrameFactory;
this.deleteLeafFrameFactory = deleteLeafFrameFactory;
this.cmpFactories = cmpFactories;
@@ -363,8 +364,7 @@ public class LSMBTree extends AbstractLSMIndex implements
ITreeIndex {
public LSMBTreeOpContext createOpContext(IModificationOperationCallback
modificationCallback,
ISearchOperationCallback searchCallback) {
int numBloomFilterKeyFields = hasBloomFilter
- ? ((LSMBTreeWithBloomFilterDiskComponentFactory)
componentFactory).getBloomFilterKeyFields().length
- : 0;
+ ? ((LSMBTreeWithBloomFilterDiskComponentFactory)
componentFactory).getBloomFilterKeyFields().length : 0;
return new LSMBTreeOpContext(memoryComponents, insertLeafFrameFactory,
deleteLeafFrameFactory,
modificationCallback, searchCallback, numBloomFilterKeyFields,
getTreeFields(), getFilterFields(),
getLsmHarness(), getFilterCmpFactories());
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeMemoryComponent.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeMemoryComponent.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeMemoryComponent.java
index b334d80..c7d555d 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeMemoryComponent.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeMemoryComponent.java
@@ -28,8 +28,9 @@ public class LSMBTreeMemoryComponent extends
AbstractLSMMemoryComponent {
private final BTree btree;
- public LSMBTreeMemoryComponent(BTree btree, IVirtualBufferCache vbc,
boolean isActive, ILSMComponentFilter filter) {
- super(vbc, isActive, filter);
+ public LSMBTreeMemoryComponent(LSMBTree lsmIndex, BTree btree,
IVirtualBufferCache vbc, boolean isActive,
+ ILSMComponentFilter filter) {
+ super(lsmIndex, vbc, isActive, filter);
this.btree = btree;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMemoryComponent.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMemoryComponent.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMemoryComponent.java
index 828b58e..a1a1e45 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMemoryComponent.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddyMemoryComponent.java
@@ -20,9 +20,10 @@ package org.apache.hyracks.storage.am.lsm.btree.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.ILSMComponentFilter;
import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
+import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
/*
* This class is also not needed at the moment but is implemented anyway
@@ -32,9 +33,9 @@ public class LSMBTreeWithBuddyMemoryComponent extends
AbstractLSMWithBuddyMemory
private final BTree btree;
private final BTree buddyBtree;
- public LSMBTreeWithBuddyMemoryComponent(BTree btree, BTree buddyBtree,
IVirtualBufferCache vbc, boolean isActive,
- ILSMComponentFilter filter) {
- super(vbc, isActive, filter);
+ public LSMBTreeWithBuddyMemoryComponent(AbstractLSMIndex lsmIndex, BTree
btree, BTree buddyBtree,
+ IVirtualBufferCache vbc, boolean isActive, ILSMComponentFilter
filter) {
+ super(lsmIndex, vbc, isActive, filter);
this.btree = btree;
this.buddyBtree = buddyBtree;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java
index 2c4e6b1..a0b1905 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/utils/LSMBTreeUtil.java
@@ -45,7 +45,7 @@ import
org.apache.hyracks.storage.am.lsm.btree.impls.LSMBTreeWithBuddyFileManage
import
org.apache.hyracks.storage.am.lsm.btree.tuples.LSMBTreeCopyTupleWriterFactory;
import
org.apache.hyracks.storage.am.lsm.btree.tuples.LSMBTreeTupleWriterFactory;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentFactory;
-import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallback;
+import
org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationCallbackFactory;
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.ILSMMergePolicy;
@@ -68,7 +68,7 @@ public class LSMBTreeUtil {
FileReference file, IBufferCache diskBufferCache, ITypeTraits[]
typeTraits,
IBinaryComparatorFactory[] cmpFactories, int[]
bloomFilterKeyFields, double bloomFilterFalsePositiveRate,
ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker,
ILSMIOOperationScheduler ioScheduler,
- ILSMIOOperationCallback ioOpCallback, boolean needKeyDupCheck,
ITypeTraits[] filterTypeTraits,
+ ILSMIOOperationCallbackFactory ioOpCallbackFactory, boolean
needKeyDupCheck, ITypeTraits[] filterTypeTraits,
IBinaryComparatorFactory[] filterCmpFactories, int[] btreeFields,
int[] filterFields, boolean durable,
IMetadataPageManagerFactory freePageManagerFactory, boolean
updateAware, ITracer tracer)
throws HyracksDataException {
@@ -123,15 +123,16 @@ public class LSMBTreeUtil {
return new LSMBTree(ioManager, virtualBufferCaches,
interiorFrameFactory, insertLeafFrameFactory,
deleteLeafFrameFactory, diskBufferCache, fileNameManager,
componentFactory, bulkLoadComponentFactory,
filterHelper, filterFrameFactory, filterManager,
bloomFilterFalsePositiveRate, typeTraits.length,
- cmpFactories, mergePolicy, opTracker, ioScheduler,
ioOpCallback, needKeyDupCheck, btreeFields,
+ cmpFactories, mergePolicy, opTracker, ioScheduler,
ioOpCallbackFactory, needKeyDupCheck, btreeFields,
filterFields, durable, updateAware, tracer);
}
public static ExternalBTree createExternalBTree(IIOManager ioManager,
FileReference file,
IBufferCache diskBufferCache, ITypeTraits[] typeTraits,
IBinaryComparatorFactory[] cmpFactories,
int[] bloomFilterKeyFields, double bloomFilterFalsePositiveRate,
ILSMMergePolicy mergePolicy,
- ILSMOperationTracker opTracker, ILSMIOOperationScheduler
ioScheduler, ILSMIOOperationCallback ioOpCallback,
- boolean durable, IMetadataPageManagerFactory
freePageManagerFactory) {
+ ILSMOperationTracker opTracker, ILSMIOOperationScheduler
ioScheduler,
+ ILSMIOOperationCallbackFactory ioOpCallbackFactory, boolean
durable,
+ IMetadataPageManagerFactory freePageManagerFactory) {
LSMBTreeTupleWriterFactory insertTupleWriterFactory =
new LSMBTreeTupleWriterFactory(typeTraits,
cmpFactories.length, false, false);
LSMBTreeTupleWriterFactory deleteTupleWriterFactory =
@@ -175,14 +176,14 @@ public class LSMBTreeUtil {
return new ExternalBTree(ioManager, interiorFrameFactory,
insertLeafFrameFactory, deleteLeafFrameFactory,
diskBufferCache, fileNameManager, componentFactory,
bulkLoadComponentFactory,
transactionComponentFactory, bloomFilterFalsePositiveRate,
cmpFactories, mergePolicy, opTracker,
- ioScheduler, ioOpCallback, durable);
+ ioScheduler, ioOpCallbackFactory, durable);
}
public static ExternalBTreeWithBuddy
createExternalBTreeWithBuddy(IIOManager ioManager, FileReference file,
IBufferCache diskBufferCache, ITypeTraits[] typeTraits,
IBinaryComparatorFactory[] cmpFactories,
double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy,
ILSMOperationTracker opTracker,
- ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback
ioOpCallback, int[] buddyBTreeFields,
- boolean durable, IMetadataPageManagerFactory
freePageManagerFactory) {
+ ILSMIOOperationScheduler ioScheduler,
ILSMIOOperationCallbackFactory ioOpCallbackFactory,
+ int[] buddyBTreeFields, boolean durable,
IMetadataPageManagerFactory freePageManagerFactory) {
ITypeTraits[] buddyBtreeTypeTraits = new
ITypeTraits[buddyBTreeFields.length];
IBinaryComparatorFactory[] buddyBtreeCmpFactories = new
IBinaryComparatorFactory[buddyBTreeFields.length];
for (int i = 0; i < buddyBtreeTypeTraits.length; i++) {
@@ -231,6 +232,6 @@ public class LSMBTreeUtil {
return new ExternalBTreeWithBuddy(ioManager, interiorFrameFactory,
insertLeafFrameFactory,
buddyBtreeLeafFrameFactory, diskBufferCache, fileNameManager,
componentFactory,
bulkLoadComponentFactory, bloomFilterFalsePositiveRate,
mergePolicy, opTracker, ioScheduler,
- ioOpCallback, cmpFactories, buddyBtreeCmpFactories,
buddyBTreeFields, durable);
+ ioOpCallbackFactory, cmpFactories, buddyBtreeCmpFactories,
buddyBTreeFields, durable);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/AbstractLSMWithBuddyMemoryComponent.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/AbstractLSMWithBuddyMemoryComponent.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/AbstractLSMWithBuddyMemoryComponent.java
index b445142..551303f 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/AbstractLSMWithBuddyMemoryComponent.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/AbstractLSMWithBuddyMemoryComponent.java
@@ -20,12 +20,14 @@ package org.apache.hyracks.storage.am.lsm.common.api;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.storage.am.common.impls.AbstractTreeIndex;
+import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
import
org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMMemoryComponent;
public abstract class AbstractLSMWithBuddyMemoryComponent extends
AbstractLSMMemoryComponent {
- public AbstractLSMWithBuddyMemoryComponent(IVirtualBufferCache vbc,
boolean isActive, ILSMComponentFilter filter) {
- super(vbc, isActive, filter);
+ public AbstractLSMWithBuddyMemoryComponent(AbstractLSMIndex lsmIndex,
IVirtualBufferCache vbc, boolean isActive,
+ ILSMComponentFilter filter) {
+ super(lsmIndex, vbc, isActive, filter);
}
public abstract AbstractTreeIndex getBuddyIndex();
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
index 7cfd268..0323026 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
@@ -27,6 +27,7 @@ public interface ILSMIOOperationCallback {
/**
* This method is called on an IO operation before the operation starts.
* (i.e. IO operations could be flush or merge operations.)
+ * For flush, this is called immediately before switching the current
memory component pointer
*/
void beforeOperation(LSMOperationType opType) throws HyracksDataException;
@@ -54,5 +55,18 @@ public interface ILSMIOOperationCallback {
*/
void afterFinalize(LSMOperationType opType, ILSMDiskComponent
newComponent) throws HyracksDataException;
- void setNumOfMutableComponents(int count);
+ /**
+ * This method is called when a memory component is recycled
+ *
+ * @param component
+ */
+ void recycled(ILSMMemoryComponent component) throws HyracksDataException;
+
+ /**
+ * This method is called when a memory component is allocated
+ *
+ * @param component
+ */
+ void allocated(ILSMMemoryComponent component) throws HyracksDataException;
+
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallbackFactory.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallbackFactory.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallbackFactory.java
index ef76415..b291f7c 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallbackFactory.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallbackFactory.java
@@ -22,5 +22,5 @@ import java.io.Serializable;
@FunctionalInterface
public interface ILSMIOOperationCallbackFactory extends Serializable {
- ILSMIOOperationCallback createIoOpCallback();
+ ILSMIOOperationCallback createIoOpCallback(ILSMIndex index);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/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..0f48621 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
@@ -140,4 +140,9 @@ public interface ILSMIndex extends IIndex {
* @throws HyracksDataException
*/
ILSMDiskComponent createBulkLoadTarget() throws HyracksDataException;
+
+ /**
+ * @return The number of all memory components (active and inactive)
+ */
+ int getNumberOfAllMemoryComponents();
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
index d69a78c..ac124ba 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMComponent.java
@@ -26,11 +26,13 @@ public abstract class AbstractLSMComponent implements
ILSMComponent {
// Finals
protected final LongPointable pointable =
LongPointable.FACTORY.createPointable();
protected final ILSMComponentFilter filter;
+ protected final AbstractLSMIndex lsmIndex;
// Mutables
protected ComponentState state;
protected int readerCount;
- public AbstractLSMComponent(ILSMComponentFilter filter) {
+ public AbstractLSMComponent(AbstractLSMIndex lsmIndex, ILSMComponentFilter
filter) {
+ this.lsmIndex = lsmIndex;
this.filter = filter;
readerCount = 0;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMDiskComponent.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMDiskComponent.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMDiskComponent.java
index 0b59e91..a0d1c23 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMDiskComponent.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMDiskComponent.java
@@ -30,12 +30,10 @@ import org.apache.hyracks.storage.common.MultiComparator;
public abstract class AbstractLSMDiskComponent extends AbstractLSMComponent
implements ILSMDiskComponent {
private final DiskComponentMetadata metadata;
- private final AbstractLSMIndex lsmIndex;
public AbstractLSMDiskComponent(AbstractLSMIndex lsmIndex,
IMetadataPageManager mdPageManager,
ILSMComponentFilter filter) {
- super(filter);
- this.lsmIndex = lsmIndex;
+ super(lsmIndex, filter);
state = ComponentState.READABLE_UNWRITABLE;
metadata = new DiskComponentMetadata(mdPageManager);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/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..dd3a5de 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
@@ -48,6 +48,7 @@ import
org.apache.hyracks.storage.am.lsm.common.api.ILSMDiskComponentFactory;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMHarness;
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.ILSMIOOperationCallbackFactory;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIOOperationScheduler;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor;
@@ -100,7 +101,7 @@ public abstract class AbstractLSMIndex implements ILSMIndex
{
public AbstractLSMIndex(IIOManager ioManager, List<IVirtualBufferCache>
virtualBufferCaches,
IBufferCache diskBufferCache, ILSMIndexFileManager fileManager,
double bloomFilterFalsePositiveRate,
ILSMMergePolicy mergePolicy, ILSMOperationTracker opTracker,
ILSMIOOperationScheduler ioScheduler,
- ILSMIOOperationCallback ioOpCallback, ILSMDiskComponentFactory
componentFactory,
+ ILSMIOOperationCallbackFactory ioOpCallbackFactory,
ILSMDiskComponentFactory componentFactory,
ILSMDiskComponentFactory bulkLoadComponentFactory,
ILSMComponentFilterFrameFactory filterFrameFactory,
LSMComponentFilterManager filterManager, int[] filterFields,
boolean durable,
IComponentFilterHelper filterHelper, int[] treeFields, ITracer
tracer) {
@@ -110,10 +111,9 @@ public abstract class AbstractLSMIndex implements
ILSMIndex {
this.fileManager = fileManager;
this.bloomFilterFalsePositiveRate = bloomFilterFalsePositiveRate;
this.ioScheduler = ioScheduler;
- this.ioOpCallback = ioOpCallback;
+ this.ioOpCallback = ioOpCallbackFactory.createIoOpCallback(this);
this.componentFactory = componentFactory;
this.bulkLoadComponentFactory = bulkLoadComponentFactory;
-
this.ioOpCallback.setNumOfMutableComponents(virtualBufferCaches.size());
this.filterHelper = filterHelper;
this.filterFrameFactory = filterFrameFactory;
this.filterManager = filterManager;
@@ -136,7 +136,7 @@ public abstract class AbstractLSMIndex implements ILSMIndex
{
// The constructor used by external indexes
public AbstractLSMIndex(IIOManager ioManager, IBufferCache
diskBufferCache, ILSMIndexFileManager fileManager,
double bloomFilterFalsePositiveRate, ILSMMergePolicy mergePolicy,
ILSMOperationTracker opTracker,
- ILSMIOOperationScheduler ioScheduler, ILSMIOOperationCallback
ioOpCallback,
+ ILSMIOOperationScheduler ioScheduler,
ILSMIOOperationCallbackFactory ioOpCallbackFactory,
ILSMDiskComponentFactory componentFactory,
ILSMDiskComponentFactory bulkLoadComponentFactory,
boolean durable) {
this.ioManager = ioManager;
@@ -144,7 +144,7 @@ public abstract class AbstractLSMIndex implements ILSMIndex
{
this.fileManager = fileManager;
this.bloomFilterFalsePositiveRate = bloomFilterFalsePositiveRate;
this.ioScheduler = ioScheduler;
- this.ioOpCallback = ioOpCallback;
+ this.ioOpCallback = ioOpCallbackFactory.createIoOpCallback(this);
this.componentFactory = componentFactory;
this.bulkLoadComponentFactory = bulkLoadComponentFactory;
this.durable = durable;
@@ -153,7 +153,7 @@ public abstract class AbstractLSMIndex implements ILSMIndex
{
diskComponents = new LinkedList<>();
this.inactiveDiskComponents = new LinkedList<>();
// Memory related objects are nulled
- this.virtualBufferCaches = null;
+ virtualBufferCaches = null;
memoryComponents = null;
currentMutableComponentId = null;
flushRequests = null;
@@ -425,6 +425,7 @@ public abstract class AbstractLSMIndex implements ILSMIndex
{
}
for (ILSMMemoryComponent c : memoryComponents) {
c.allocate();
+ ioOpCallback.allocated(c);
}
memoryComponentsAllocated = true;
}
@@ -507,8 +508,8 @@ public abstract class AbstractLSMIndex implements ILSMIndex
{
}
@Override
- public boolean hasMemoryComponents() {
- return true;
+ public final int getNumberOfAllMemoryComponents() {
+ return virtualBufferCaches == null ? 0 : virtualBufferCaches.size();
}
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/e32cb676/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMMemoryComponent.java
----------------------------------------------------------------------
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMMemoryComponent.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMMemoryComponent.java
index 57db635..b7c3350 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMMemoryComponent.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMMemoryComponent.java
@@ -35,8 +35,9 @@ public abstract class AbstractLSMMemoryComponent extends
AbstractLSMComponent im
private boolean requestedToBeActive;
private final MemoryComponentMetadata metadata;
- public AbstractLSMMemoryComponent(IVirtualBufferCache vbc, boolean
isActive, ILSMComponentFilter filter) {
- super(filter);
+ public AbstractLSMMemoryComponent(AbstractLSMIndex lsmIndex,
IVirtualBufferCache vbc, boolean isActive,
+ ILSMComponentFilter filter) {
+ super(lsmIndex, filter);
this.vbc = vbc;
writerCount = 0;
if (isActive) {
@@ -53,6 +54,7 @@ public abstract class AbstractLSMMemoryComponent extends
AbstractLSMComponent im
if (state == ComponentState.INACTIVE && requestedToBeActive) {
state = ComponentState.READABLE_WRITABLE;
requestedToBeActive = false;
+ lsmIndex.getIOOperationCallback().recycled(this);
}
switch (opType) {
case FORCE_MODIFICATION: