abdullah alamoudi has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/2668
Change subject: [NO ISSUE][STO] Skip deleting unallocated memory component
......................................................................
[NO ISSUE][STO] Skip deleting unallocated memory component
Change-Id: I0c6c7968830f3c9241bd036c0a330be1400349b4
---
M
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
1 file changed, 16 insertions(+), 8 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/68/2668/1
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
index 7a87a13..3d912ce 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
@@ -738,23 +738,28 @@
@Override
public void deleteComponents(ILSMIndexOperationContext ctx,
Predicate<ILSMComponent> predicate)
throws HyracksDataException {
- boolean deleteMemoryComponent;
+ boolean deletedMemoryComponent = false;
ILSMIOOperation ioOperation = null;
synchronized (opTracker) {
waitForFlushesAndMerges();
// We always start with the memory component
ILSMMemoryComponent memComponent =
lsmIndex.getCurrentMemoryComponent();
- deleteMemoryComponent = predicate.test(memComponent);
- if (deleteMemoryComponent) {
- // schedule a delete for flushed component
- ctx.reset();
- ctx.setOperation(IndexOperation.DELETE_COMPONENTS);
- ioOperation = scheduleFlush(ctx);
+ if (memComponent.getState() != ComponentState.INACTIVE) {
+ deletedMemoryComponent = predicate.test(memComponent);
+ if (deletedMemoryComponent) {
+ // schedule a delete for flushed component
+ ctx.reset();
+ ctx.setOperation(IndexOperation.DELETE_COMPONENTS);
+ ioOperation = scheduleFlush(ctx);
+ } else {
+ // since we're not deleting the memory component, we can't
delete any previous component
+ return;
+ }
}
}
// Here, we are releasing the opTracker to allow other operations:
// (searches, delete flush we will schedule, delete merge we will
schedule).
- if (deleteMemoryComponent) {
+ if (deletedMemoryComponent) {
try {
ioOperation.sync();
} catch (InterruptedException e) {
@@ -774,6 +779,9 @@
for (ILSMDiskComponent component : diskComponents) {
if (predicate.test(component)) {
ctx.getComponentsToBeMerged().add(component);
+ } else {
+ // Can't delete older components when newer one is still
there
+ break;
}
}
if (ctx.getComponentsToBeMerged().isEmpty()) {
--
To view, visit https://asterix-gerrit.ics.uci.edu/2668
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I0c6c7968830f3c9241bd036c0a330be1400349b4
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>