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"); }
