Murtadha Hubail has posted comments on this change. Change subject: [ASTERIXDB-1995][STO] Abort write txn when index cannot be flushed ......................................................................
Patch Set 4: (7 comments) https://asterix-gerrit.ics.uci.edu/#/c/1896/4/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java File asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java: PS4, Line 226: ("target", "io", "dir") > Can we keep this defined in one place? Done PS4, Line 229: getDefaultStoragePath Will rename this method to getStoragePath later to avoid breaking extensions. https://asterix-gerrit.ics.uci.edu/#/c/1896/4/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/DiskIsFullTest.java File asterixdb/asterix-app/src/test/java/org/apache/asterix/test/storage/DiskIsFullTest.java: PS4, Line 156: Assert.assertEquals(cause.getErrorCode(), expectedException.getErrorCode()); > check both error code and component? Done https://asterix-gerrit.ics.uci.edu/#/c/1896/1/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java File asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/resource/PersistentLocalResourceRepository.java: Line 199: throw HyracksDataException.create(CANNOT_CREATE_FILE, parent.getAbsolutePath()); > MAJOR SonarQube violation: Done https://asterix-gerrit.ics.uci.edu/#/c/1896/4/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: PS4, Line 511: lsmIndex.markAsValid(newComponent); > If I recall correctly, in markAsValid, we wait for the pages to be flushed That's correct. Which also makes the operation in our afterFinalize wrong. I fixed it for for exitComponents and will file an issue for afterFinalize. PS4, Line 677: final Optional<ILSMMemoryComponent> any = lsmIndex.getMemoryComponents().stream() : .filter(c -> c.getState() == ComponentState.INACTIVE || c.getState() == ComponentState.READABLE_WRITABLE : || c.getState() == ComponentState.READABLE_UNWRITABLE_FLUSHING).findAny(); > double check object creation in this since it is called frequently! Here is what I remember. This does interface pointer allocation, which is a very cheap operation on modern JVMs. I modified it anyway. PS4, Line 681: "Disk is full" > This probably should be part of the error message in the text file as it is Done -- To view, visit https://asterix-gerrit.ics.uci.edu/1896 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: I28592c30c788f4a6f44db8b47a84bc77f6b3f8f3 Gerrit-PatchSet: 4 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Dmitry Lychagin <[email protected]> Gerrit-Reviewer: Ian Maxon <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]> Gerrit-Reviewer: Yingyi Bu <[email protected]> Gerrit-Reviewer: abdullah alamoudi <[email protected]> Gerrit-HasComments: Yes
