This is an automated email from the ASF dual-hosted git repository. dlych pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit bba70c58b14273fc8f5b66aab6f51109b4423122 Author: Murtadha Hubail <[email protected]> AuthorDate: Sat Sep 28 13:40:58 2019 +0300 [NO ISSUE][TXN] Remove Synchronization on TransactionContext - user model changes: no - storage format changes: no - interface changes: no Details: - Currently the flag indicating if a transaction timed out synchronizes on the transaction context which makes it a hot spot when multiple threads on the same transactions attempting to access that flag. This change removes that synchronization and replaces it with a volatile variable. Change-Id: Ib14c07a051d27a5b47c62ff35769670e6ab01fd2 Reviewed-on: https://asterix-gerrit.ics.uci.edu/3579 Reviewed-by: Murtadha Hubail <[email protected]> Tested-by: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: Michael Blow <[email protected]> --- .../management/service/transaction/AbstractTransactionContext.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/AbstractTransactionContext.java b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/AbstractTransactionContext.java index a0944ea..104f9a7 100644 --- a/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/AbstractTransactionContext.java +++ b/asterixdb/asterix-transactions/src/main/java/org/apache/asterix/transaction/management/service/transaction/AbstractTransactionContext.java @@ -41,7 +41,7 @@ public abstract class AbstractTransactionContext implements ITransactionContext private final AtomicLong lastLSN; private final AtomicInteger txnState; private final AtomicBoolean isWriteTxn; - private boolean isTimeout = false; + private volatile boolean isTimeout; protected AbstractTransactionContext(TxnId txnId) { this.txnId = txnId; @@ -80,12 +80,12 @@ public abstract class AbstractTransactionContext implements ITransactionContext } @Override - public synchronized void setTimeout(boolean isTimeout) { + public void setTimeout(boolean isTimeout) { this.isTimeout = isTimeout; } @Override - public synchronized boolean isTimeout() { + public boolean isTimeout() { return isTimeout; }
