Repository: incubator-trafodion
Updated Branches:
  refs/heads/master 1b6dfef74 -> 48f20cc52


[TRAFODION-2325] Reduce path length by avoiding expensive APIs

Avoided calling System.getenv() many times


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/8e90c514
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/8e90c514
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/8e90c514

Branch: refs/heads/master
Commit: 8e90c5148caca9954fa53f0732e18b8a4abd0e10
Parents: 2c3c7c5
Author: selvaganesang <[email protected]>
Authored: Fri Oct 28 18:59:36 2016 +0000
Committer: selvaganesang <[email protected]>
Committed: Fri Oct 28 18:59:36 2016 +0000

----------------------------------------------------------------------
 .../hbase/client/transactional/RMInterface.java | 14 +++----
 .../client/transactional/TransactionState.java  | 41 ++++++++++----------
 .../java/org/trafodion/dtm/HBaseTxClient.java   | 27 ++++++-------
 .../java/org/trafodion/sql/HTableClient.java    | 38 +++++++++---------
 4 files changed, 60 insertions(+), 60 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8e90c514/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/RMInterface.java
----------------------------------------------------------------------
diff --git 
a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/RMInterface.java
 
b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/RMInterface.java
index e8500b0..a5bb7b2 100644
--- 
a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/RMInterface.java
+++ 
b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/RMInterface.java
@@ -93,6 +93,11 @@ public class RMInterface {
     private Connection connection;
     static {
         System.loadLibrary("stmlib");
+        String envset = System.getenv("TM_USE_SSCC");
+        if (envset != null)
+           envTransactionAlgorithm = (Integer.parseInt(envset) == 1) ? 
AlgorithmType.SSCC : AlgorithmType.MVCC;
+        else
+           envTransactionAlgorithm = AlgorithmType.MVCC;
     }
 
     private native void registerRegion(int port, byte[] hostname, long 
startcode, byte[] regionInfo);
@@ -112,17 +117,13 @@ public class RMInterface {
        MVCC, SSCC
     }
 
+    private static AlgorithmType envTransactionAlgorithm;
     private AlgorithmType transactionAlgorithm;
 
     public RMInterface(final String tableName, Connection connection) throws 
IOException {
         //super(conf, Bytes.toBytes(tableName));
         this.connection = connection;
-        transactionAlgorithm = AlgorithmType.MVCC;
-        String envset = System.getenv("TM_USE_SSCC");
-        if( envset != null)
-        {
-            transactionAlgorithm = (Integer.parseInt(envset) == 1) ? 
AlgorithmType.SSCC : AlgorithmType.MVCC;
-        }
+        transactionAlgorithm = envTransactionAlgorithm;
         if( transactionAlgorithm == AlgorithmType.MVCC) //MVCC
         {
             ttable = new TransactionalTable(Bytes.toBytes(tableName), 
connection);
@@ -131,7 +132,6 @@ public class RMInterface {
         {
             ttable = new SsccTransactionalTable( Bytes.toBytes(tableName), 
connection);
         }
-
         idServer = new IdTm(false);
         if (LOG.isTraceEnabled()) LOG.trace("RMInterface constructor exit");
     }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8e90c514/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionState.java
----------------------------------------------------------------------
diff --git 
a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionState.java
 
b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionState.java
index a49c1d1..68e8e11 100644
--- 
a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionState.java
+++ 
b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionState.java
@@ -67,9 +67,9 @@ public class TransactionState {
     private Object commitSendLock;
     private Throwable hasError;
     private boolean localTransaction;
+    private static boolean envLocalTransaction;
     private boolean ddlTrans;
     private static boolean useConcurrentHM = false;
-    private static boolean getCHMVariable = true;
     private boolean hasRetried = false;
     private boolean uteLogged = false;
 
@@ -87,6 +87,23 @@ public class TransactionState {
       return localTransaction;
     }
 
+    static {
+       String concurrentHM = System.getenv("DTM_USE_CONCURRENTHM");
+       if (concurrentHM != null) 
+           useConcurrentHM = (Integer.parseInt(concurrentHM) == 0) ? false : 
true;
+       else
+           useConcurrentHM = false;
+       if (useConcurrentHM) 
+          LOG.info("Using ConcurrentHashMap synchronization to synchronize 
participatingRegions");
+       else 
+          LOG.info("Using synchronizedSet to synchronize 
participatingRegions");
+       String localTxns = System.getenv("DTM_LOCAL_TRANSACTIONS");
+       if (localTxns != null) 
+          envLocalTransaction = (Integer.parseInt(localTxns) == 0) ? false : 
true;
+       else
+          envLocalTransaction = false; 
+    }
+
     public TransactionState(final long transactionId) {
         this.transactionId = transactionId;
         setStatus(TransState.STATE_ACTIVE);
@@ -98,21 +115,6 @@ public class TransactionState {
         hasError = null;
         ddlTrans = false;
 
-        if(getCHMVariable) {
-          String concurrentHM = System.getenv("DTM_USE_CONCURRENTHM");
-          if (concurrentHM != null) {
-            useConcurrentHM = (Integer.parseInt(concurrentHM)==0)?false:true;
-          }
-          if(LOG.isTraceEnabled()) {
-            if(useConcurrentHM) {
-              LOG.trace("Using ConcurrentHashMap synchronization to 
synchronize participatingRegions");
-            }
-            else {
-              LOG.trace("Using synchronizedSet to synchronize 
participatingRegions");
-            }
-          }
-          getCHMVariable = false;
-        }
         if(useConcurrentHM) {
           participatingRegions = Collections.newSetFromMap((new 
ConcurrentHashMap<TransactionRegionLocation, Boolean>()));
         }
@@ -120,14 +122,11 @@ public class TransactionState {
           participatingRegions = Collections.synchronizedSet(new 
HashSet<TransactionRegionLocation>());
         }
 
-        String localTxns = System.getenv("DTM_LOCAL_TRANSACTIONS");
-        if (localTxns != null) {
-          localTransaction = (Integer.parseInt(localTxns)==0)?false:true;
-          //System.out.println("TS begin local txn id " + transactionId);
+        localTransaction = envLocalTransaction;
+        if (localTransaction) {
           if (LOG.isTraceEnabled()) LOG.trace("TransactionState local 
transaction begun: " + transactionId);
         }
         else {
-          localTransaction = false;
           if (LOG.isTraceEnabled()) LOG.trace("TransactionState global 
transaction begun: " + transactionId);
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8e90c514/core/sqf/src/seatrans/tm/hbasetmlib2/src/main/java/org/trafodion/dtm/HBaseTxClient.java
----------------------------------------------------------------------
diff --git 
a/core/sqf/src/seatrans/tm/hbasetmlib2/src/main/java/org/trafodion/dtm/HBaseTxClient.java
 
b/core/sqf/src/seatrans/tm/hbasetmlib2/src/main/java/org/trafodion/dtm/HBaseTxClient.java
index 77c4808..5ec8509 100644
--- 
a/core/sqf/src/seatrans/tm/hbasetmlib2/src/main/java/org/trafodion/dtm/HBaseTxClient.java
+++ 
b/core/sqf/src/seatrans/tm/hbasetmlib2/src/main/java/org/trafodion/dtm/HBaseTxClient.java
@@ -890,7 +890,7 @@ public class HBaseTxClient {
       * Thread to gather recovery information for regions that need to be 
recovered 
       */
      private static class RecoveryThread extends Thread{
-             final int SLEEP_DELAY = 1000; // Initially set to run every 1sec
+             static final int SLEEP_DELAY = 1000; // Initially set to run 
every 1sec
              private int sleepTimeInt = 0;
              private boolean skipSleep = false;
              private TmAuditTlog audit;
@@ -905,6 +905,16 @@ public class HBaseTxClient {
              private boolean forceForgotten;
              private boolean useTlog;
              HBaseTxClient hbtx;
+             private static int envSleepTimeInt;
+
+         static {
+            String sleepTime = System.getenv("TMRECOV_SLEEP");
+            if (sleepTime != null) 
+               envSleepTimeInt = Integer.parseInt(sleepTime);
+            else
+               envSleepTimeInt = SLEEP_DELAY;
+            LOG.info("Recovery thread sleep set to: " + envSleepTimeInt + " 
ms");
+         }
 
          public RecoveryThread(TmAuditTlog audit,
                                HBaseTmZK zookeeper,
@@ -934,13 +944,7 @@ public class HBaseTxClient {
                           this.txnManager = txnManager;
                           this.inDoubtList = new HashSet<Long> ();
                           this.tmID = zookeeper.getTMID();
-
-                          String sleepTime = System.getenv("TMRECOV_SLEEP");
-                          if (sleepTime != null) {
-                                this.sleepTimeInt = 
Integer.parseInt(sleepTime);
-                                if(LOG.isDebugEnabled()) LOG.debug("Recovery 
thread sleep set to: " +
-                                                                   
this.sleepTimeInt + "ms");
-                          }
+                          this.sleepTimeInt = envSleepTimeInt;
              }
 
              public void stopThread() {
@@ -1133,11 +1137,8 @@ public class HBaseTxClient {
                         }
                         try {
                             if(continueThread) {
-                                if(!skipSleep) {
-                                    if (sleepTimeInt > 0)
-                                        Thread.sleep(sleepTimeInt);
-                                    else
-                                        Thread.sleep(SLEEP_DELAY);
+                                if (!skipSleep) {
+                                   Thread.sleep(sleepTimeInt);
                                 }
                             }
                             retryCount = 0;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8e90c514/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/HTableClient.java 
b/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
index 5fbd4f9..eb100dc 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
@@ -103,6 +103,8 @@ public class HTableClient {
        private static final int SCAN_FETCH = 3;
        private boolean useTRex;
        private boolean useTRexScanner;
+        private static boolean envUseTRex;
+        private static boolean envUseTRexScanner;
        private String tableName;
         private static Connection connection;
        private ResultScanner scanner = null;
@@ -334,25 +336,9 @@ public class HTableClient {
            else {
 
                // If the parameter useTRex is false, then do not go thru this 
logic
-
-               String useTransactions = System.getenv("USE_TRANSACTIONS");
-               if (useTransactions != null) {
-                   int lv_useTransactions = 
(Integer.parseInt(useTransactions));
-                   if (lv_useTransactions == 0) {
-                       this.useTRex = false;
-                   }
-               }
-           
-               this.useTRexScanner = true;
-               String useTransactionsScanner = 
System.getenv("USE_TRANSACTIONS_SCANNER");
-               if (useTransactionsScanner != null) {
-                   int lv_useTransactionsScanner = 
(Integer.parseInt(useTransactionsScanner));
-                   if (lv_useTransactionsScanner == 0) {
-                       this.useTRexScanner = false;
-                   }
-               }
+                this.useTRex = envUseTRex;
+                this.useTRexScanner = envUseTRexScanner;
            }
-
            table = new RMInterface(tblName, connection);
            if (logger.isDebugEnabled()) logger.debug("Exit HTableClient::init, 
useTRex: " + this.useTRex + ", useTRexScanner: "
                      + this.useTRexScanner + ", table object: " + table);
@@ -1619,7 +1605,7 @@ public class HTableClient {
                }       
        }
     
-    public boolean insertRow(long transID, byte[] rowID, 
+        public boolean insertRow(long transID, byte[] rowID, 
                          Object row, 
                         long timestamp,
                          boolean asyncOperation) throws IOException, 
InterruptedException, ExecutionException {
@@ -1880,6 +1866,20 @@ public class HTableClient {
    protected native int setJavaObject(long jniObject);
  
    static {
+     envUseTRex = true;
+     envUseTRexScanner = true;
+     String useTransactions = System.getenv("USE_TRANSACTIONS");
+     if (useTransactions != null) {
+        int lv_useTransactions = (Integer.parseInt(useTransactions));
+        if (lv_useTransactions == 0) 
+           envUseTRex = false;
+     }
+     String useTransactionsScanner = System.getenv("USE_TRANSACTIONS_SCANNER");
+     if (useTransactionsScanner != null) {
+        int lv_useTransactionsScanner = 
(Integer.parseInt(useTransactionsScanner));
+        if (lv_useTransactionsScanner == 0) 
+           envUseTRexScanner = false;
+     }
      executorService = Executors.newCachedThreadPool();
      System.loadLibrary("executor");
    }

Reply via email to