abdullah alamoudi has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/1335
Change subject: Fix Getting Operational Components for Search Operations
......................................................................
Fix Getting Operational Components for Search Operations
Change-Id: If046ead8a9c1e32c2b8be55d7b035f23b71ed3ea
---
M
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTree.java
M
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
M
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
3 files changed, 50 insertions(+), 41 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/35/1335/1
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 6d673a9..0b3d048 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
@@ -129,8 +129,8 @@
++i;
}
componentFactory = new LSMBTreeDiskComponentFactory(diskBTreeFactory,
bloomFilterFactory, filterFactory);
- bulkLoadComponentFactory =
- new LSMBTreeDiskComponentFactory(bulkLoadBTreeFactory,
bloomFilterFactory, filterFactory);
+ bulkLoadComponentFactory = new
LSMBTreeDiskComponentFactory(bulkLoadBTreeFactory, bloomFilterFactory,
+ filterFactory);
this.needKeyDupCheck = needKeyDupCheck;
this.btreeFields = btreeFields;
this.hasBloomFilter = needKeyDupCheck;
@@ -184,9 +184,9 @@
for (LSMComponentFileReferences lsmComonentFileReference :
validFileReferences) {
LSMBTreeDiskComponent component;
try {
- component =
- createDiskComponent(componentFactory,
lsmComonentFileReference.getInsertIndexFileReference(),
-
lsmComonentFileReference.getBloomFilterFileReference(), false);
+ component = createDiskComponent(componentFactory,
lsmComonentFileReference
+ .getInsertIndexFileReference(),
+
lsmComonentFileReference.getBloomFilterFileReference(), false);
} catch (IndexException e) {
throw new HyracksDataException(e);
}
@@ -288,12 +288,12 @@
break;
case INSERT:
case UPSERT:
- addOperationalMutableComponents(operationalComponents);
+ addOperationalMutableComponents(operationalComponents,
ctx.getOperation());
operationalComponents.addAll(immutableComponents);
break;
case SEARCH:
if (memoryComponentsAllocated) {
- addOperationalMutableComponents(operationalComponents);
+ addOperationalMutableComponents(operationalComponents,
ctx.getOperation());
}
if (filterManager != null) {
for (ILSMComponent c : immutableComponents) {
@@ -483,7 +483,7 @@
}
if (component.getLSMComponentFilter() != null) {
- List<ITupleReference> filterTuples = new
ArrayList<ITupleReference>();
+ List<ITupleReference> filterTuples = new ArrayList<>();
filterTuples.add(flushingComponent.getLSMComponentFilter().getMinTuple());
filterTuples.add(flushingComponent.getLSMComponentFilter().getMaxTuple());
filterManager.updateFilterInfo(component.getLSMComponentFilter(),
filterTuples);
@@ -511,8 +511,8 @@
BTree lastBTree = ((LSMBTreeDiskComponent)
mergingComponents.get(mergingComponents.size() - 1)).getBTree();
FileReference firstFile = firstBTree.getFileReference();
FileReference lastFile = lastBTree.getFileReference();
- LSMComponentFileReferences relMergeFileRefs =
-
fileManager.getRelMergeFileReference(firstFile.getFile().getName(),
lastFile.getFile().getName());
+ LSMComponentFileReferences relMergeFileRefs =
fileManager.getRelMergeFileReference(firstFile.getFile()
+ .getName(), lastFile.getFile().getName());
ILSMIndexAccessorInternal accessor = new LSMBTreeAccessor(lsmHarness,
opCtx);
ioScheduler.scheduleOperation(new LSMBTreeMergeOperation(accessor,
mergingComponents, cursor,
relMergeFileRefs.getInsertIndexFileReference(),
relMergeFileRefs.getBloomFilterFileReference(),
@@ -542,8 +542,8 @@
LSMBTreeDiskComponent mergedComponent =
createDiskComponent(componentFactory, mergeOp.getBTreeMergeTarget(),
mergeOp.getBloomFilterMergeTarget(), true);
- IIndexBulkLoader bulkLoader =
- mergedComponent.getBTree().createBulkLoader(1.0f, false,
numElements, false, true);
+ IIndexBulkLoader bulkLoader =
mergedComponent.getBTree().createBulkLoader(1.0f, false, numElements, false,
+ true);
IIndexBulkLoader builder = null;
if (hasBloomFilter) {
builder =
mergedComponent.getBloomFilter().createBuilder(numElements,
bloomFilterSpec.getNumHashes(),
@@ -565,7 +565,7 @@
}
}
if (mergedComponent.getLSMComponentFilter() != null) {
- List<ITupleReference> filterTuples = new
ArrayList<ITupleReference>();
+ List<ITupleReference> filterTuples = new ArrayList<>();
for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
filterTuples.add(mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMinTuple());
filterTuples.add(mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMaxTuple());
@@ -658,8 +658,8 @@
if (hasBloomFilter) {
int maxBucketsPerElement =
BloomCalculations.maxBucketsPerElement(numElementsHint);
- BloomFilterSpecification bloomFilterSpec =
-
BloomCalculations.computeBloomSpec(maxBucketsPerElement,
bloomFilterFalsePositiveRate);
+ BloomFilterSpecification bloomFilterSpec =
BloomCalculations.computeBloomSpec(maxBucketsPerElement,
+ bloomFilterFalsePositiveRate);
builder = ((LSMBTreeDiskComponent)
component).getBloomFilter().createBuilder(numElementsHint,
bloomFilterSpec.getNumHashes(),
bloomFilterSpec.getNumBucketsPerElements());
} else {
@@ -799,36 +799,36 @@
@Override
public ITreeIndexFrameFactory getInteriorFrameFactory() {
- LSMBTreeMemoryComponent mutableComponent =
- (LSMBTreeMemoryComponent)
memoryComponents.get(currentMutableComponentId.get());
+ LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent)
memoryComponents.get(
+ currentMutableComponentId.get());
return mutableComponent.getBTree().getInteriorFrameFactory();
}
@Override
public int getFieldCount() {
- LSMBTreeMemoryComponent mutableComponent =
- (LSMBTreeMemoryComponent)
memoryComponents.get(currentMutableComponentId.get());
+ LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent)
memoryComponents.get(
+ currentMutableComponentId.get());
return mutableComponent.getBTree().getFieldCount();
}
@Override
public int getFileId() {
- LSMBTreeMemoryComponent mutableComponent =
- (LSMBTreeMemoryComponent)
memoryComponents.get(currentMutableComponentId.get());
+ LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent)
memoryComponents.get(
+ currentMutableComponentId.get());
return mutableComponent.getBTree().getFileId();
}
@Override
public IMetaDataPageManager getMetaManager() {
- LSMBTreeMemoryComponent mutableComponent =
- (LSMBTreeMemoryComponent)
memoryComponents.get(currentMutableComponentId.get());
+ LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent)
memoryComponents.get(
+ currentMutableComponentId.get());
return mutableComponent.getBTree().getMetaManager();
}
@Override
public ITreeIndexFrameFactory getLeafFrameFactory() {
- LSMBTreeMemoryComponent mutableComponent =
- (LSMBTreeMemoryComponent)
memoryComponents.get(currentMutableComponentId.get());
+ LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent)
memoryComponents.get(
+ currentMutableComponentId.get());
return mutableComponent.getBTree().getLeafFrameFactory();
}
@@ -845,8 +845,8 @@
@Override
public int getRootPageId() {
- LSMBTreeMemoryComponent mutableComponent =
- (LSMBTreeMemoryComponent)
memoryComponents.get(currentMutableComponentId.get());
+ LSMBTreeMemoryComponent mutableComponent = (LSMBTreeMemoryComponent)
memoryComponents.get(
+ currentMutableComponentId.get());
return mutableComponent.getBTree().getRootPageId();
}
@@ -882,7 +882,7 @@
@Override
public Set<String> getLSMComponentPhysicalFiles(ILSMComponent
lsmComponent) {
- Set<String> files = new HashSet<String>();
+ Set<String> files = new HashSet<>();
LSMBTreeDiskComponent component = (LSMBTreeDiskComponent) lsmComponent;
files.add(component.getBTree().getFileReference().getFile().getAbsolutePath());
if (hasBloomFilter) {
@@ -918,7 +918,7 @@
memoryComponentsAllocated = true;
}
- private void addOperationalMutableComponents(List<ILSMComponent>
operationalComponents) {
+ private void addOperationalMutableComponents(List<ILSMComponent>
operationalComponents, IndexOperation op) {
int cmc = currentMutableComponentId.get();
int numMutableComponents = memoryComponents.size();
for (int i = 0; i < numMutableComponents - 1; i++) {
@@ -929,8 +929,11 @@
operationalComponents.add(0, mutableComponent);
}
}
- // The current mutable component is always added
- operationalComponents.add(0, memoryComponents.get(cmc));
+ // The current mutable component is always added unless it is a search
and it is not
+ LSMBTreeMemoryComponent currentMemoryComponent =
(LSMBTreeMemoryComponent) memoryComponents.get(cmc);
+ if (op != IndexOperation.SEARCH ||
currentMemoryComponent.isReadable()) {
+ operationalComponents.add(0, currentMemoryComponent);
+ }
}
private synchronized void clearMemoryComponents() throws
HyracksDataException {
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
index bf6e9b5..4919872 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
@@ -375,8 +375,8 @@
List<ILSMComponent> operationalComponents = ictx.getComponentHolder();
int numComponents = operationalComponents.size();
boolean includeMutableComponent = false;
- ArrayList<IIndexAccessor> indexAccessors = new
ArrayList<IIndexAccessor>(numComponents);
- ArrayList<IIndexAccessor> deletedKeysBTreeAccessors = new
ArrayList<IIndexAccessor>(numComponents);
+ ArrayList<IIndexAccessor> indexAccessors = new
ArrayList<>(numComponents);
+ ArrayList<IIndexAccessor> deletedKeysBTreeAccessors = new
ArrayList<>(numComponents);
for (int i = 0; i < operationalComponents.size(); i++) {
ILSMComponent component = operationalComponents.get(i);
@@ -433,7 +433,8 @@
}
/**
- * Returns a permuting tuple reference that projects away the document
field(s) of a tuple, only leaving the key fields.
+ * Returns a permuting tuple reference that projects away the document
field(s) of a tuple, only leaving the key
+ * fields.
*/
private PermutingTupleReference createKeysOnlyTupleReference() {
// Project away token fields.
@@ -491,7 +492,7 @@
scanCursor.close();
}
if (component.getLSMComponentFilter() != null) {
- List<ITupleReference> filterTuples = new
ArrayList<ITupleReference>();
+ List<ITupleReference> filterTuples = new ArrayList<>();
filterTuples.add(flushingComponent.getLSMComponentFilter().getMinTuple());
filterTuples.add(flushingComponent.getLSMComponentFilter().getMaxTuple());
filterManager.updateFilterInfo(component.getLSMComponentFilter(),
filterTuples);
@@ -643,7 +644,7 @@
cursor.close();
}
if (component.getLSMComponentFilter() != null) {
- List<ITupleReference> filterTuples = new
ArrayList<ITupleReference>();
+ List<ITupleReference> filterTuples = new ArrayList<>();
for (int i = 0; i < mergeOp.getMergingComponents().size(); ++i) {
ITupleReference min =
mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMinTuple();
ITupleReference max =
mergeOp.getMergingComponents().get(i).getLSMComponentFilter().getMaxTuple();
@@ -929,7 +930,7 @@
@Override
public Set<String> getLSMComponentPhysicalFiles(ILSMComponent
lsmComponent) {
- Set<String> files = new HashSet<String>();
+ Set<String> files = new HashSet<>();
LSMInvertedIndexDiskComponent invIndexComponent =
(LSMInvertedIndexDiskComponent) lsmComponent;
OnDiskInvertedIndex invIndex = (OnDiskInvertedIndex)
invIndexComponent.getInvIndex();
files.add(invIndex.getInvListsFile().getFile().getAbsolutePath());
@@ -969,8 +970,11 @@
operationalComponents.add(0, mutableComponent);
}
}
- // The current mutable component is always added
- operationalComponents.add(0, memoryComponents.get(cmc));
+ LSMInvertedIndexMemoryComponent currentMutableComponent =
(LSMInvertedIndexMemoryComponent) memoryComponents
+ .get(cmc);
+ if (currentMutableComponent.isReadable()) {
+ operationalComponents.add(0, memoryComponents.get(cmc));
+ }
}
private synchronized void clearMemoryComponents() throws
HyracksDataException {
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
index b2a5b2b..89ad46a 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/AbstractLSMRTree.java
@@ -441,8 +441,10 @@
operationalComponents.add(0, mutableComponent);
}
}
- // The current mutable component is always added
- operationalComponents.add(0, memoryComponents.get(cmc));
+ LSMRTreeMemoryComponent memComponent = (LSMRTreeMemoryComponent)
memoryComponents.get(cmc);
+ if (memComponent.isReadable()) {
+ operationalComponents.add(0, memComponent);
+ }
}
private synchronized void clearMemoryComponents() throws
HyracksDataException {
--
To view, visit https://asterix-gerrit.ics.uci.edu/1335
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If046ead8a9c1e32c2b8be55d7b035f23b71ed3ea
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>