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]>

Reply via email to