You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by dl...@apache.org on 2019/10/04 19:23:29 UTC

[asterixdb] 01/03: [NO ISSUE][TXN] Remove Synchronization on TransactionContext

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 <mh...@apache.org>
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 <mh...@apache.org>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Michael Blow <mb...@apache.org>
---
 .../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;
     }