You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by db...@apache.org on 2016/05/25 20:34:29 UTC

[07/39] incubator-trafodion git commit: Fix for TRAFODION-1923

Fix for TRAFODION-1923


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

Branch: refs/heads/master
Commit: ac298d39e93c221fd18ab7377fc830d31dba2659
Parents: 29fb212
Author: Prashant Vasudev <pr...@esgyn.com>
Authored: Wed May 4 00:15:51 2016 +0000
Committer: Prashant Vasudev <pr...@esgyn.com>
Committed: Wed May 4 00:15:51 2016 +0000

----------------------------------------------------------------------
 .../TransactionalScanner.java.tmpl              |  6 ++-
 .../transactional/SplitBalanceHelper.java       | 51 ++++++++++++++++++--
 .../transactional/TrxRegionObserver.java.tmpl   |  4 +-
 core/sql/generator/GenPreCode.cpp               |  1 -
 core/sql/regress/tools/runregr_executor.ksh     |  2 +-
 .../java/org/trafodion/sql/HTableClient.java    |  5 +-
 6 files changed, 59 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ac298d39/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionalScanner.java.tmpl
----------------------------------------------------------------------
diff --git a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionalScanner.java.tmpl b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionalScanner.java.tmpl
index 40bbeeb..618cd85 100755
--- a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionalScanner.java.tmpl
+++ b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/client/transactional/TransactionalScanner.java.tmpl
@@ -105,7 +105,7 @@ public class TransactionalScanner extends AbstractClientScanner {
     
     @Override
     public void close() {
-        if(LOG.isTraceEnabled()) LOG.trace("close() -- ENTRY txID: " + ts.getTransactionId());
+        if(LOG.isTraceEnabled()) LOG.trace("close() -- ENTRY txID: " + ts.getTransactionId() + " " + this.ttable );
         if(closed) {
             if(LOG.isTraceEnabled()) LOG.trace("close()  already closed -- EXIT txID: " + ts.getTransactionId());
             return;
@@ -138,6 +138,10 @@ public class TransactionalScanner extends AbstractClientScanner {
             }
         }
         catch(ServiceException se) {
+            if(LOG.isErrorEnabled()) 
+                LOG.error("close() -- CloseScanner ServiceException txID: " + ts.getTransactionId() +
+                        "Exception :" , se);
+                                              
             this.interrupted = true;
             this.closed = false;
         }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ac298d39/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
----------------------------------------------------------------------
diff --git a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
index 0d76b55..c1c23ce 100644
--- a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
+++ b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/SplitBalanceHelper.java
@@ -25,7 +25,9 @@ package org.apache.hadoop.hbase.coprocessor.transactional;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.Iterator;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicBoolean;
 
@@ -36,6 +38,7 @@ import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.regionserver.transactional.TransactionalRegionScannerHolder;
 import org.apache.hadoop.hbase.regionserver.transactional.TrxTransactionState;
+import org.apache.hadoop.hbase.regionserver.transactional.TransactionState;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.zookeeper.ZKUtil;
 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
@@ -240,8 +243,45 @@ public class SplitBalanceHelper {
         }
     }
 
-    protected boolean scannersListClear(ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners) throws IOException {
-        return scanners.isEmpty();
+    //Returning true indicates scannerList is Clear.
+    protected boolean scannersListClear(ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners,
+    									ConcurrentHashMap<String, TrxTransactionState> transactionsById) throws IOException {
+    	  if(scanners.isEmpty()) 
+    	  {
+    	  	if (LOG.isDebugEnabled()) LOG.debug("scannersListClear Scanners is empty: " + hri.getRegionNameAsString());
+    	  	return true;
+    	  }
+    	  else
+    	  {
+    	  	if (LOG.isDebugEnabled()) LOG.debug("scannersListClear Scanners is not empty: " + hri.getRegionNameAsString());
+    	  	Iterator<Map.Entry<Long, TransactionalRegionScannerHolder>> scannerIter = scanners.entrySet().iterator();
+    	  	TransactionalRegionScannerHolder rsh = null;
+          Map.Entry<Long, TransactionalRegionScannerHolder> entry;
+    	  	while(scannerIter.hasNext())
+    	  	{
+    	  		entry = scannerIter.next();
+            rsh = entry.getValue();
+            if (rsh != null)
+            {
+            	if (LOG.isDebugEnabled()) LOG.debug("scannersListClear Active Scanner is: "+ rsh.scannerId +
+            			" Txid: "+ rsh.transId + " Region: " + hri.getRegionNameAsString());
+              String key = hri.getRegionNameAsString() + rsh.transId;
+              TrxTransactionState trxState = transactionsById.get(key);
+              
+              //if trxState is present means there is activity with this region.
+              //Hence don't return true.
+              if(trxState != null)
+              {
+             		LOG.info("scannersListClear Active Scanner found, ScannerId: " + 
+              				 rsh.scannerId + " Txid: "+ rsh.transId + " Region: " + hri.getRegionNameAsString());
+              	return false;
+          			
+              }
+            }
+    	  	}
+    	  	//Reaching here means, there is no active scanner.
+    	  	return true;
+    	  }
     }
 
     protected void pendingWait(Set<TrxTransactionState> commitPendingTransactions, int pendingDelayLen) throws IOException {
@@ -258,6 +298,7 @@ public class SplitBalanceHelper {
         }
     }
 
+    /*
     protected void scannersWait(ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners, int pendingDelayLen)
             throws IOException {
         int count = 1;
@@ -272,11 +313,13 @@ public class SplitBalanceHelper {
             }
         }
     }
+    */
 
     protected void pendingAndScannersWait(Set<TrxTransactionState> commitPendingTransactions,
-            ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners, int pendingDelayLen) throws IOException {
+            ConcurrentHashMap<Long, TransactionalRegionScannerHolder> scanners,
+            ConcurrentHashMap<String, TrxTransactionState> transactionsById, int pendingDelayLen) throws IOException {
         int count = 1;
-        while (!scannersListClear(scanners) || !pendingListClear(commitPendingTransactions)) {
+        while (!scannersListClear(scanners, transactionsById) || !pendingListClear(commitPendingTransactions)) {
             try {
                 if (LOG.isDebugEnabled()) LOG.debug("pendingAndScannersWait() delay, count " + count++ + " on: " + hri.getRegionNameAsString());
                 Thread.sleep(pendingDelayLen);

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ac298d39/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/TrxRegionObserver.java.tmpl
----------------------------------------------------------------------
diff --git a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/TrxRegionObserver.java.tmpl b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/TrxRegionObserver.java.tmpl
index 7de9391..5c087af 100644
--- a/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/TrxRegionObserver.java.tmpl
+++ b/core/sqf/src/seatrans/hbase-trx/src/main/java/org/apache/hadoop/hbase/coprocessor/transactional/TrxRegionObserver.java.tmpl
@@ -686,7 +686,7 @@ public void createRecoveryzNode(int node, String encodedName, byte [] data) thro
         else {
             blockNonPhase2.set(true);
             closing.set(true);
-            sbHelper.pendingAndScannersWait(commitPendingTransactions, scanners, pendingDelayLen);
+            sbHelper.pendingAndScannersWait(commitPendingTransactions, scanners, transactionsById, pendingDelayLen);
 
             sbHelper.setSplit();
         }
@@ -765,7 +765,7 @@ public void createRecoveryzNode(int node, String encodedName, byte [] data) thro
 	            LOG.debug("preClose -- setting close var to true on: " + region.getRegionInfo().getRegionNameAsString());
 	        }
 	        try {
-	          sbHelper.pendingAndScannersWait(commitPendingTransactions, scanners, pendingDelayLen);
+	          sbHelper.pendingAndScannersWait(commitPendingTransactions, scanners, transactionsById, pendingDelayLen);
 	        } catch(IOException ioe) {
 	          LOG.error("Encountered exception when calling pendingAndScannersWait(): " + ioe);
 	        }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ac298d39/core/sql/generator/GenPreCode.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenPreCode.cpp b/core/sql/generator/GenPreCode.cpp
index 1591e9a..2c77f8d 100644
--- a/core/sql/generator/GenPreCode.cpp
+++ b/core/sql/generator/GenPreCode.cpp
@@ -2857,7 +2857,6 @@ short DDLExpr::ddlXnsInfo(NABoolean &isDDLxn, NABoolean &xnCanBeStarted)
   if ((ddlNode && ddlNode->castToStmtDDLNode() &&
        ddlNode->castToStmtDDLNode()->ddlXns()) &&
       ((ddlNode->getOperatorType() == DDL_CLEANUP_OBJECTS) ||
-       (ddlNode->getOperatorType() == DDL_DROP_SCHEMA) ||
        (ddlNode->getOperatorType() == DDL_ALTER_TABLE_DROP_COLUMN) ||
        (ddlNode->getOperatorType() == DDL_ALTER_TABLE_ALTER_COLUMN_DATATYPE)))
     {

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ac298d39/core/sql/regress/tools/runregr_executor.ksh
----------------------------------------------------------------------
diff --git a/core/sql/regress/tools/runregr_executor.ksh b/core/sql/regress/tools/runregr_executor.ksh
index 21215b3..3411009 100755
--- a/core/sql/regress/tools/runregr_executor.ksh
+++ b/core/sql/regress/tools/runregr_executor.ksh
@@ -237,7 +237,7 @@ skippedfiles=
 
 # sbtestfiles contains the list of tests to be run in seabase mode
 if [ "$seabase" -ne 0 ]; then
-  sbtestfiles="TEST001 TEST002 TEST012 TEST013 TEST014 TEST015 TEST016 TEST020 TEST022 TEST025 TEST050 TEST063 TEST088 TEST101 TEST107 TEST122 TEST130 TEST131 TEST140"
+  sbtestfiles="TEST001 TEST002 TEST012 TEST013 TEST014 TEST015 TEST016 TEST020 TEST022 TEST025 TEST050 TEST063 TEST088 TEST101 TEST106 TEST107 TEST122 TEST130 TEST131 TEST140"
   sbprettyfiles=
   for i in $prettyfiles; do
     for j in $sbtestfiles; do

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ac298d39/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 4a9bc07..4bc9bfd 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HTableClient.java
@@ -982,7 +982,8 @@ public class HTableClient {
 	    } else {
           scanner = table.getScanner(scan,dopParallelScanner);
         }
-        if (logger.isTraceEnabled()) logger.trace("startScan(). After getScanner. Scanner: " + scanner+" dop:"+dopParallelScanner);
+        if (logger.isTraceEnabled()) logger.trace("startScan(). After getScanner. Scanner: " + scanner+ " dop:"+
+        		    dopParallelScanner + "TransID " + transID + " " + useTRexScanner + " " +  getTableName());
 	  }
 	  else
 	  {
@@ -1733,6 +1734,8 @@ public class HTableClient {
               future = null;
           }
 	  if (scanner != null) {
+	  	if (logger.isTraceEnabled()) logger.trace("scanner.close() " + tableName + " " + scanner + " " 
+	  			 + retcode );
 	    scanner.close();
 	    scanner = null;
 	  }