Murtadha Hubail has posted comments on this change. Change subject: Deadlock-free locking protocol is enabled Change-Id: Ie58ae2f519baa53599e99b51bd61ea5f8366dafd ......................................................................
Patch Set 1: (10 comments) I did a first pass and left some comments. Please address them. https://asterix-gerrit.ics.uci.edu/#/c/825/1/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java File asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/base/RuleCollections.java: Line 293: //Turned off the following rule since the rule is useless for read-committed isolation level. WS https://asterix-gerrit.ics.uci.edu/#/c/825/1/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/transactions/LogRecord.java: Line 69: * 5) WAIT_LOG_SIZE: 14 bytes (Header1(6) + Tail(8)) WS Line 70: * --> WAIT_LOG only requires LogType Field, but in order to conform the log reader protocol WS https://asterix-gerrit.ics.uci.edu/#/c/825/1/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexModificationOperationCallback.java File asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/opcallbacks/PrimaryIndexModificationOperationCallback.java: Line 76: //release all locks held by this actor (which is a thread) by flushing partial frame. WS Line 77: boolean retVal = lockManager.tryLock(jobThreadId, datasetId, pkHash, LockMode.X, txnCtx); rename variable https://asterix-gerrit.ics.uci.edu/#/c/825/1/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java File asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/logging/LogManagerWithReplication.java: Line 44: //only locally generated logs should be replicated add here && logRecord.getLogType() == LogType.WAIT to avoid replicating WAIT logs. Line 76: //wait for job Commit/Abort ACK from replicas Add here if(Record.getLogType() == LogType.JOB_COMMIT || logRecord.getLogType() == LogType.ABORT) to avoid making WAIT logs wait for replica ACKS which will never come. https://asterix-gerrit.ics.uci.edu/#/c/825/1/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionSubsystem.java File asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/TransactionSubsystem.java: Line 57: public long profilerEntityCommitLogCount = 0; Don't make this public, add a method to increment it Line 132: * WS Line 133: * @author kisskys Remove author -- To view, visit https://asterix-gerrit.ics.uci.edu/825 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ie58ae2f519baa53599e99b51bd61ea5f8366dafd Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Young-Seok Kim <kiss...@gmail.com> Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Gerrit-Reviewer: Murtadha Hubail <hubail...@gmail.com> Gerrit-Reviewer: Till Westmann <ti...@apache.org> Gerrit-Reviewer: abdullah alamoudi <bamou...@gmail.com> Gerrit-HasComments: Yes