change a method name and added comments.
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeFlushOperation.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeFlushOperation.java
index 5802421..668e727 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeFlushOperation.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeFlushOperation.java
@@ -58,8 +58,9 @@
}
@Override
- public void perform() throws HyracksDataException, IndexException {
+ public Boolean call() throws HyracksDataException, IndexException {
accessor.flush(this);
+ return true;
}
@Override
@@ -82,10 +83,4 @@
public ILSMComponent getFlushingComponent() {
return flushingComponent;
}
-
- @Override
- public Boolean call() throws Exception {
- perform();
- return true;
- }
}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeMergeOperation.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeMergeOperation.java
index ef5c113..3a608fe 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeMergeOperation.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/btree/impls/LSMBTreeMergeOperation.java
@@ -69,8 +69,9 @@
}
@Override
- public void perform() throws HyracksDataException, IndexException {
+ public Boolean call() throws HyracksDataException, IndexException {
accessor.merge(this);
+ return true;
}
@Override
@@ -93,10 +94,4 @@
public List<ILSMComponent> getMergingComponents() {
return mergingComponents;
}
-
- @Override
- public Boolean call() throws Exception {
- perform();
- return true;
- }
}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/api/ILSMIOOperation.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/api/ILSMIOOperation.java
index 9118cc3..2c3940f 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/api/ILSMIOOperation.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/api/ILSMIOOperation.java
@@ -26,7 +26,7 @@
public Set<IODeviceHandle> getWriteDevices();
- public void perform() throws HyracksDataException, IndexException;
+ public Boolean call() throws HyracksDataException, IndexException;
public ILSMIOOperationCallback getCallback();
}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
index e814540..bc6baeb 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractDiskLSMComponent.java
@@ -54,6 +54,8 @@
throws HyracksDataException {
switch (opType) {
case MERGE:
+ // In case two merge operations were scheduled to merge an overlapping set of components, the second merge will fail and it must
+ // reset those components back to their previous state.
if (failedOperation) {
state = ComponentState.READABLE_UNWRITABLE;
}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
index 7b96de0..2cab564 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/AbstractMemoryLSMComponent.java
@@ -86,9 +86,6 @@
}
break;
case FLUSH:
- // There should not be two flush requests of the same component at the same time.
- assert state != ComponentState.READABLE_UNWRITABLE_FLUSHING
- && state != ComponentState.UNREADABLE_UNWRITABLE;
if (state == ComponentState.READABLE_WRITABLE || state == ComponentState.READABLE_UNWRITABLE) {
assert writerCount == 0;
state = ComponentState.READABLE_UNWRITABLE_FLUSHING;
@@ -111,6 +108,7 @@
case MODIFICATION:
if (isMutableComponent) {
writerCount--;
+ // TODO: we prevent a failedOperation from changing the state of the component as a defensive code. Revisit this to verify if this check is needed at all.
if (state == ComponentState.READABLE_WRITABLE && isFull() && !failedOperation) {
state = ComponentState.READABLE_UNWRITABLE;
}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/SynchronousScheduler.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/SynchronousScheduler.java
index 5eb63a9..44c20f5 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/SynchronousScheduler.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/common/impls/SynchronousScheduler.java
@@ -25,7 +25,7 @@
@Override
public void scheduleOperation(ILSMIOOperation operation) throws HyracksDataException {
try {
- operation.perform();
+ operation.call();
} catch (IndexException e) {
throw new HyracksDataException(e);
}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFlushOperation.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFlushOperation.java
index 242d1bb..45433e7 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFlushOperation.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexFlushOperation.java
@@ -63,8 +63,9 @@
}
@Override
- public void perform() throws HyracksDataException, IndexException {
+ public Boolean call() throws HyracksDataException, IndexException {
accessor.flush(this);
+ return true;
}
@Override
@@ -87,10 +88,4 @@
public ILSMComponent getFlushingComponent() {
return flushingComponent;
}
-
- @Override
- public Boolean call() throws Exception {
- perform();
- return true;
- }
}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java
index 2d4bc9e..7cd921a 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndexMergeOperation.java
@@ -74,8 +74,9 @@
}
@Override
- public void perform() throws HyracksDataException, IndexException {
+ public Boolean call() throws HyracksDataException, IndexException {
accessor.merge(this);
+ return true;
}
@Override
@@ -102,10 +103,4 @@
public List<ILSMComponent> getMergingComponents() {
return mergingComponents;
}
-
- @Override
- public Boolean call() throws Exception {
- perform();
- return true;
- }
}
\ No newline at end of file
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java
index 77083d5..18d7a7e 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeFlushOperation.java
@@ -64,8 +64,9 @@
}
@Override
- public void perform() throws HyracksDataException, IndexException {
+ public Boolean call() throws HyracksDataException, IndexException {
accessor.flush(this);
+ return true;
}
@Override
@@ -88,10 +89,4 @@
public ILSMComponent getFlushingComponent() {
return flushingComponent;
}
-
- @Override
- public Boolean call() throws Exception {
- perform();
- return true;
- }
}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMergeOperation.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMergeOperation.java
index 8d95c41..da7a2fb 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMergeOperation.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/edu/uci/ics/hyracks/storage/am/lsm/rtree/impls/LSMRTreeMergeOperation.java
@@ -75,8 +75,9 @@
}
@Override
- public void perform() throws HyracksDataException, IndexException {
+ public Boolean call() throws HyracksDataException, IndexException {
accessor.merge(this);
+ return true;
}
@Override
@@ -103,10 +104,4 @@
public List<ILSMComponent> getMergingComponents() {
return mergingComponents;
}
-
- @Override
- public Boolean call() throws Exception {
- perform();
- return true;
- }
}