Yingyi Bu has posted comments on this change. Change subject: Enable Component rollback in LSM Indexes ......................................................................
Patch Set 9: (13 comments) There are a couple of issues that I can think of. It's likely that I missed sth. 1. Can we use the similar mechanism to MERGE for deleting files/components? E.g., ILSMIndex.subsumeComponents(...) and inactiveDiskComponentsToBeDeleted in LSMHarness.exitComponents(...). It feels to me that all mechanisms are there. 2. Based on 1., it feels that IPageManager.clear() is not necessary. Why MERGE doesn't need IPageManager.clear()? https://asterix-gerrit.ics.uci.edu/#/c/1788/9/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/ComponentRollbackTest.java File asterixdb/asterix-app/src/test/java/org/apache/asterix/test/dataflow/ComponentRollbackTest.java: PS9, Line 83: ComponentRollbackTest Fix all Thread.sleep(...) according to the sonar cube suggestion? https://asterix-gerrit.ics.uci.edu/#/c/1788/9/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/CorrelatedPrefixMergePolicy.java File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/CorrelatedPrefixMergePolicy.java: PS9, Line 280: || immutableComponents.get(i).getState() == ComponentState.DECOMMISSIONING why decommissioning implies isMergeOngoing==true? https://asterix-gerrit.ics.uci.edu/#/c/1788/9/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/utils/IoUtil.java File hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/utils/IoUtil.java: PS9, Line 19: control.nc move this to hyracks-util? https://asterix-gerrit.ics.uci.edu/#/c/1788/9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMMemoryComponent.java File hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractLSMMemoryComponent.java: PS9, Line 121: IllegalStateException Error code? PS9, Line 125: Error code? https://asterix-gerrit.ics.uci.edu/#/c/1788/9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ConstantMergePolicy.java File hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/ConstantMergePolicy.java: PS9, Line 138: immutableComponents.get(i).getState() == ComponentState.DECOMMISSIONING The code reads weird: immutableComponents.get(i).getState() == ComponentState.DECOMMISSIONING implies isMergeOngoing == true https://asterix-gerrit.ics.uci.edu/#/c/1788/9/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java File hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java: PS9, Line 217: failedOperation pull if(failedOperation) out to reduce nested levels. PS9, Line 261: if (opType == LSMOperationType.ROLLBACK) { Move the if branch to be CASE in side the next switch(opType)? PS9, Line 262: lsmIndex.getDiskComponents().remove(c); Do that inside lsmIndex so that readers can easily track which component(s) is(are) removed. For example, add a new method called removeDiskComponent(ILSMDiskComponent c) into the ILSMIndex interface. PS9, Line 496: if (newComponent != null) reverse the if condition to reduce nesting levels. PS9, Line 690: rollback change the method name to logRollback()? PS9, Line 686: try { : for (ILSMComponent c : ctx.getComponentHolder()) { : if (c.getType() == LSMComponentType.DISK) { : // persist rollback in case of crash : ((ILSMDiskComponent) c).rollback(); : } : } : } Creating a shadow file does not need to be within synchronized(opTracker). PS9, Line 693: finally { : exitComponents(ctx, LSMOperationType.ROLLBACK, null, false); : } exitComponents(...) shouldn't under the umbrella of synchronized(opTracker) -- To view, visit https://asterix-gerrit.ics.uci.edu/1788 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I5fe10965734b60776100580c9568a0f954d6cb58 Gerrit-PatchSet: 9 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: abdullah alamoudi <bamou...@gmail.com> Gerrit-Reviewer: Ian Maxon <ima...@apache.org> Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Gerrit-Reviewer: Luo Chen <cl...@uci.edu> Gerrit-Reviewer: Murtadha Hubail <hubail...@gmail.com> Gerrit-Reviewer: Till Westmann <ti...@apache.org> Gerrit-Reviewer: Yingyi Bu <buyin...@gmail.com> Gerrit-Reviewer: abdullah alamoudi <bamou...@gmail.com> Gerrit-HasComments: Yes