You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by su...@apache.org on 2015/08/14 18:04:51 UTC

[1/2] incubator-trafodion git commit: [TRAFODION-1448] Leak in HTableClient objects

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master 3cb15c389 -> d35f77e1c


[TRAFODION-1448] Leak in HTableClient objects

Refactored the code to ensure that HTableClient object in java
is released for every batch of gets.

In the process removed unused code in HTableClient_JNI.cpp and
ExpHbaseInterface.cpp


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

Branch: refs/heads/master
Commit: 9d42c620cd1ddca4197bedce6eb20ed7dfde2a0c
Parents: ae8e49f
Author: selvaganesang <se...@esgyn.com>
Authored: Thu Aug 13 16:47:28 2015 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Thu Aug 13 16:47:28 2015 +0000

----------------------------------------------------------------------
 core/sql/executor/ExHbaseIUD.cpp      |  33 +++----
 core/sql/executor/ExHbaseSelect.cpp   |   6 +-
 core/sql/executor/HBaseClient.java    |   7 ++
 core/sql/executor/HBaseClient_JNI.cpp | 152 ++++++++---------------------
 core/sql/executor/HBaseClient_JNI.h   |   8 +-
 core/sql/exp/ExpHbaseInterface.cpp    |  34 +++----
 core/sql/exp/ExpHbaseInterface.h      |  18 ++--
 7 files changed, 87 insertions(+), 171 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/9d42c620/core/sql/executor/ExHbaseIUD.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHbaseIUD.cpp b/core/sql/executor/ExHbaseIUD.cpp
index 96545d0..be16263 100644
--- a/core/sql/executor/ExHbaseIUD.cpp
+++ b/core/sql/executor/ExHbaseIUD.cpp
@@ -3835,9 +3835,7 @@ ExWorkProcRetcode ExHbaseAccessSQRowsetTcb::work()
           }
           else
             step_ = ALL_DONE;
-     }
-
-
+      }
       switch (step_)
 	{
 	case NOT_STARTED:
@@ -3885,16 +3883,10 @@ ExWorkProcRetcode ExHbaseAccessSQRowsetTcb::work()
 	    setupListOfColNames(hbaseAccessTdb().listOfFetchedColNames(),
 				columns_);
 
-	    if (hbaseAccessTdb().getAccessType() == ComTdbHbaseAccess::SELECT_) {
-	        retcode = ehi_->getHTableClient(table_);
-	        if (setupError(retcode, "ExpHbaseInterface::getHTableClient")) {
-	           step_ = HANDLE_ERROR;
-		   break;
-	        }
-	        step_ = SETUP_SELECT;
-            }
+	    if (hbaseAccessTdb().getAccessType() == ComTdbHbaseAccess::SELECT_) 
+	       step_ = SETUP_SELECT;
             else
-	      step_ = SETUP_UMD;
+	       step_ = SETUP_UMD;
 	  }
 	  break;
 	case SETUP_SELECT:
@@ -3974,7 +3966,7 @@ ExWorkProcRetcode ExHbaseAccessSQRowsetTcb::work()
               // But EOD is never returned, instead HBASE_ACCESS_NO_ROW is returned
               // when no row is found in CREATE_ROW step
               if (retcode == HBASE_ACCESS_EOR) {
-                 step_ = SETUP_SELECT;
+                 step_ = RS_CLOSE;
                  break;
               }
               if (retcode == HBASE_ACCESS_EOD) {
@@ -4079,12 +4071,13 @@ ExWorkProcRetcode ExHbaseAccessSQRowsetTcb::work()
 	  {
            if (numRowsInDirectBuffer() > 0) {
               short numRowsInBuffer = patchDirectRowIDBuffers();
-	      retcode = ehi_->getRows(
+	      retcode = ehi_->getRowsOpen(
+                            table_,
                             hbaseAccessTdb().getRowIDLen(),
                             rowIDs_, 
                             columns_);
               currRowNum_ = 0;
-	      if (setupError(retcode, "ExpHbaseInterface::getRows"))
+	      if (setupError(retcode, "ExpHbaseInterface::getRowsOpen"))
 	      {
 		step_ = HANDLE_ERROR;
 		break;
@@ -4276,13 +4269,9 @@ ExWorkProcRetcode ExHbaseAccessSQRowsetTcb::work()
 	      return rc;
 
 	    if (step_ == DONE)
-		step_ = SETUP_UMD;
-	    else {
-		if (hbaseAccessTdb().getAccessType() == ComTdbHbaseAccess::SELECT_)
-		   step_ = RS_CLOSE; 
-                else
-		   step_ = NOT_STARTED;
-	      }
+	       step_ = SETUP_UMD;
+	    else 
+	       step_ = NOT_STARTED;
 	  }
 	  break;
 	} // switch

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/9d42c620/core/sql/executor/ExHbaseSelect.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHbaseSelect.cpp b/core/sql/executor/ExHbaseSelect.cpp
index fdf49cb..68f66d0 100644
--- a/core/sql/executor/ExHbaseSelect.cpp
+++ b/core/sql/executor/ExHbaseSelect.cpp
@@ -754,7 +754,7 @@ ExWorkProcRetcode ExHbaseGetTaskTcb::work(short &rc)
 	      }
 	    else
 	      {
-		retcode = tcb_->ehi_->getRowsOpen(tcb_->table_, tcb_->rowIds_,
+		retcode = tcb_->ehi_->getRowsOpen(tcb_->table_, &tcb_->rowIds_,
 					     tcb_->columns_, -1);
 		if (tcb_->setupError(retcode, "ExpHbaseInterface::getRowsOpen"))
 		  step_ = HANDLE_ERROR;
@@ -938,7 +938,7 @@ ExWorkProcRetcode ExHbaseGetRowwiseTaskTcb::work(short &rc)
 	      }
 	    else
 	      {
-		retcode = tcb_->ehi_->getRowsOpen(tcb_->table_, tcb_->rowIds_,
+		retcode = tcb_->ehi_->getRowsOpen(tcb_->table_, &tcb_->rowIds_,
 					     tcb_->columns_, -1);
 		if (tcb_->setupError(retcode, "ExpHbaseInterface::getRowsOpen"))
 		  step_ = HANDLE_ERROR;
@@ -1114,7 +1114,7 @@ ExWorkProcRetcode ExHbaseGetSQTaskTcb::work(short &rc)
 	      }
 	    else
 	      {
-		retcode = tcb_->ehi_->getRowsOpen(tcb_->table_, tcb_->rowIds_,
+		retcode = tcb_->ehi_->getRowsOpen(tcb_->table_, &tcb_->rowIds_,
 					     tcb_->columns_, -1);
 		if (tcb_->setupError(retcode, "ExpHbaseInterface::getRowsOpen"))
 		  step_ = HANDLE_ERROR;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/9d42c620/core/sql/executor/HBaseClient.java
----------------------------------------------------------------------
diff --git a/core/sql/executor/HBaseClient.java b/core/sql/executor/HBaseClient.java
index 3787a53..f14539f 100644
--- a/core/sql/executor/HBaseClient.java
+++ b/core/sql/executor/HBaseClient.java
@@ -1466,6 +1466,13 @@ public class HBaseClient {
       return htc.startGet(transID, rowIDs, columns, timestamp);
   }
 
+  public int startGet(long jniObject, String tblName, boolean useTRex, long transID, short rowIDLen, Object rowIDs,
+                        Object[] columns)
+                        throws IOException {
+      HTableClient htc = getHTableClient(jniObject, tblName, useTRex);
+      return htc.getRows(transID, rowIDLen, rowIDs, columns);
+  }
+
   public boolean insertRow(long jniObject, String tblName, boolean useTRex, long transID, byte[] rowID,
                          Object row,
                          long timestamp,

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/9d42c620/core/sql/executor/HBaseClient_JNI.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/HBaseClient_JNI.cpp b/core/sql/executor/HBaseClient_JNI.cpp
index 50e5797..635b838 100644
--- a/core/sql/executor/HBaseClient_JNI.cpp
+++ b/core/sql/executor/HBaseClient_JNI.cpp
@@ -477,6 +477,8 @@ HBC_RetCode HBaseClient_JNI::init()
     JavaMethods_[JM_START_GET].jm_signature = "(JLjava/lang/String;ZJ[B[Ljava/lang/Object;J)I";
     JavaMethods_[JM_START_GETS].jm_name      = "startGet";
     JavaMethods_[JM_START_GETS].jm_signature = "(JLjava/lang/String;ZJ[Ljava/lang/Object;[Ljava/lang/Object;J)I";
+    JavaMethods_[JM_START_DIRECT_GETS].jm_name      = "startGet";
+    JavaMethods_[JM_START_DIRECT_GETS].jm_signature = "(JLjava/lang/String;ZJSLjava/lang/Object;[Ljava/lang/Object;)I";
     JavaMethods_[JM_GET_HBTI].jm_name      = "getHbaseTableInfo";
     JavaMethods_[JM_GET_HBTI].jm_signature = "(Ljava/lang/String;[I)Z";
     JavaMethods_[JM_CREATE_COUNTER_TABLE ].jm_name      = "createCounterTable";
@@ -2589,7 +2591,6 @@ HTableClient_JNI *HBaseClient_JNI::startGet(NAHeap *heap, const char* tableName,
   jbyteArray jba_rowID = jenv_->NewByteArray(len);
   if (jba_rowID == NULL) {
      GetCliGlobals()->setJniErrorStr(getErrorText(HBC_ERROR_STARTGET_EXCEPTION));
-     jenv_->DeleteLocalRef(js_tblName);
      NADELETE(htc, HTableClient_JNI, heap);
      jenv_->PopLocalFrame(NULL);
      return NULL;;
@@ -2602,8 +2603,6 @@ HTableClient_JNI *HBaseClient_JNI::startGet(NAHeap *heap, const char* tableName,
         getExceptionDetails();
         logError(CAT_SQL_HBASE, __FILE__, __LINE__);
         logError(CAT_SQL_HBASE, "HBaseClient_JNI::startGet()", getLastError());
-        jenv_->DeleteLocalRef(js_tblName);
-        jenv_->DeleteLocalRef(jba_rowID);
         NADELETE(htc, HTableClient_JNI, heap);
         jenv_->PopLocalFrame(NULL);
         return NULL;
@@ -2629,11 +2628,6 @@ HTableClient_JNI *HBaseClient_JNI::startGet(NAHeap *heap, const char* tableName,
       hbs->incHbaseCalls();
   }
 
-  jenv_->DeleteLocalRef(js_tblName);
-  jenv_->DeleteLocalRef(jba_rowID);  
-  if (j_cols != NULL)
-     jenv_->DeleteLocalRef(j_cols);
-
   if (jenv_->ExceptionCheck()) {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
@@ -2652,7 +2646,8 @@ HTableClient_JNI *HBaseClient_JNI::startGet(NAHeap *heap, const char* tableName,
 }
 
 HTableClient_JNI *HBaseClient_JNI::startGets(NAHeap *heap, const char* tableName, bool useTRex,
-            ExHbaseAccessStats *hbs, Int64 transID, const LIST(HbaseStr)& rowIDs,
+            ExHbaseAccessStats *hbs, Int64 transID, const LIST(HbaseStr) *rowIDs, 
+            short rowIDLen, const HbaseStr *rowIDsInDB,
             const LIST(HbaseStr) & cols, Int64 timestamp)
 {
   if (javaObj_ == NULL || (!isInitialized())) {
@@ -2693,7 +2688,6 @@ HTableClient_JNI *HBaseClient_JNI::startGets(NAHeap *heap, const char* tableName
         getExceptionDetails();
         logError(CAT_SQL_HBASE, __FILE__, __LINE__);
         logError(CAT_SQL_HBASE, "HBaseClient_JNI::startGets()", getLastError());
-        jenv_->DeleteLocalRef(js_tblName);
         NADELETE(htc, HTableClient_JNI, heap);
         jenv_->PopLocalFrame(NULL);
         return NULL;
@@ -2702,41 +2696,58 @@ HTableClient_JNI *HBaseClient_JNI::startGets(NAHeap *heap, const char* tableName
   }
   else
      htc->setNumColsInScan(0);
-  jobjectArray j_rows = convertToByteArrayObjectArray(rowIDs);
-  if (j_rows == NULL)
-  {
-    getExceptionDetails();
-    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-    logError(CAT_SQL_HBASE, "HBaseClient_JNI::startGets()", getLastError());
-    jenv_->DeleteLocalRef(js_tblName);
-    if (j_cols != NULL)
-       jenv_->DeleteLocalRef(j_cols);
-    NADELETE(htc, HTableClient_JNI, heap);
-    jenv_->PopLocalFrame(NULL);
-    return NULL;
-  }  
-  htc->setNumReqRows(rowIDs.entries());
+  jobjectArray	j_rows = NULL;
+  jobject       jRowIDs = NULL;
+
+  if (rowIDs != NULL) {
+     j_rows = convertToByteArrayObjectArray(*rowIDs);
+     if (j_rows == NULL) {
+        getExceptionDetails();
+        logError(CAT_SQL_HBASE, __FILE__, __LINE__);
+        logError(CAT_SQL_HBASE, "HBaseClient_JNI::startGets()", getLastError());
+        NADELETE(htc, HTableClient_JNI, heap);
+        jenv_->PopLocalFrame(NULL);
+        return NULL;
+     }  
+     htc->setNumReqRows(rowIDs->entries());
+  } else {
+     jRowIDs = jenv_->NewDirectByteBuffer(rowIDsInDB->val, rowIDsInDB->len);
+     if (jRowIDs == NULL) {
+        GetCliGlobals()->setJniErrorStr(getErrorText(HBC_ERROR_STARTGET_EXCEPTION));
+        NADELETE(htc, HTableClient_JNI, heap);
+        jenv_->PopLocalFrame(NULL);
+        return NULL;
+     }
+     // Need to swap the bytes 
+     short numReqRows = *(short *)rowIDsInDB->val;
+     htc->setNumReqRows(bswap_16(numReqRows));
+  }
+
   jlong j_tid = transID;  
   jlong j_ts = timestamp;
-  
+  jshort jRowIDLen = rowIDLen; 
   if (hbs)
     hbs->getTimer().start();
 
-  tsRecentJMFromJNI = JavaMethods_[JM_START_GETS].jm_full_name;
-  jint jresult = jenv_->CallIntMethod(javaObj_, 
+  jint jresult;
+  if (rowIDs != NULL) {
+     tsRecentJMFromJNI = JavaMethods_[JM_START_GETS].jm_full_name;
+     jresult = jenv_->CallIntMethod(javaObj_, 
             JavaMethods_[JM_START_GETS].methodID, 
 	(jlong)htc, js_tblName, (jboolean)useTRex, j_tid, j_rows, 
             j_cols, j_ts);
+  } else {
+     tsRecentJMFromJNI = JavaMethods_[JM_START_DIRECT_GETS].jm_full_name;
+     jresult = jenv_->CallIntMethod(javaObj_, 
+            JavaMethods_[JM_START_DIRECT_GETS].methodID, 
+	(jlong)htc, js_tblName, (jboolean)useTRex, j_tid, jRowIDLen, jRowIDs, 
+            j_cols);
+  }
   if (hbs) {
       hbs->incMaxHbaseIOTime(hbs->getTimer().stop());
       hbs->incHbaseCalls();
   }
 
-  jenv_->DeleteLocalRef(js_tblName);
-  jenv_->DeleteLocalRef(j_rows);  
-  if (j_cols != NULL)
-     jenv_->DeleteLocalRef(j_cols);
-
   if (jenv_->ExceptionCheck()) {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
@@ -3486,8 +3497,6 @@ static const char* const htcErrorEnumStr[] =
  ,"Java exception in getColValue()."
  ,"Java exception in getRowID()."
  ,"Java exception in nextCell()."
- ,"Preparing parameters for getRows()."
- ,"Java exception in getRows()."
  ,"Java exception in completeAsyncOperation()."
  ,"Async Hbase Operation not yet complete."
  ,"Java exception in setWriteToWal()."
@@ -3578,8 +3587,6 @@ HTC_RetCode HTableClient_JNI::init()
     JavaMethods_[JM_SET_WRITE_TO_WAL ].jm_signature = "(Z)Z";
     JavaMethods_[JM_FETCH_ROWS ].jm_name      = "fetchRows";
     JavaMethods_[JM_FETCH_ROWS ].jm_signature = "()I";
-    JavaMethods_[JM_DIRECT_GET_ROWS ].jm_name      = "getRows";
-    JavaMethods_[JM_DIRECT_GET_ROWS ].jm_signature = "(JSLjava/lang/Object;[Ljava/lang/Object;)I";
     JavaMethods_[JM_COMPLETE_PUT ].jm_name      = "completeAsyncOperation";
     JavaMethods_[JM_COMPLETE_PUT ].jm_signature = "(I[Z)Z";
     JavaMethods_[JM_GETBEGINKEYS ].jm_name      = "getStartKeys";
@@ -3879,79 +3886,6 @@ HTC_RetCode HTableClient_JNI::deleteRow(Int64 transID, HbaseStr &rowID, const LI
 }
 
 //////////////////////////////////////////////////////////////////////////////
-// 
-//////////////////////////////////////////////////////////////////////////////
-HTC_RetCode HTableClient_JNI::getRows(Int64 transID, short rowIDLen, HbaseStr &rowIDs, 
-          const LIST(HbaseStr) & cols)
-{
-  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
-    getExceptionDetails();
-    return HTC_ERROR_GETROWS_EXCEPTION;
-  }
-  jobject jRowIDs = jenv_->NewDirectByteBuffer(rowIDs.val, rowIDs.len);
-  if (jRowIDs == NULL)
-  {
-    GetCliGlobals()->setJniErrorStr(getErrorText(HTC_ERROR_GETROWS_PARAM));
-    jenv_->PopLocalFrame(NULL);
-    return HTC_ERROR_GETROWS_PARAM;
-  }
-  
-  jobjectArray j_cols = NULL;
-  if (!cols.isEmpty())
-  {
-     j_cols = convertToByteArrayObjectArray(cols);
-     if (j_cols == NULL)
-     {
-        getExceptionDetails();
-        logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-        logError(CAT_SQL_HBASE, "HTableClient_JNI::getRows()", getLastError());
-        jenv_->DeleteLocalRef(jRowIDs);  
-        jenv_->PopLocalFrame(NULL);
-        return HTC_ERROR_GETROWS_PARAM;
-     }
-     numColsInScan_ = cols.entries();
-  }
-  else
-     numColsInScan_ = 0;
-  // Need to swap the bytes 
-  short numReqRows = *(short *)rowIDs.val;
-  numReqRows_ = bswap_16(numReqRows);
-  jlong j_tid = transID;  
-  jshort j_rowIDLen = rowIDLen;
- 
-  if (hbs_)
-    hbs_->getTimer().start();
-  setFetchMode(HTableClient_JNI::BATCH_GET);
-  tsRecentJMFromJNI = JavaMethods_[JM_DIRECT_GET_ROWS].jm_full_name;
-  jint jresult = jenv_->CallIntMethod(javaObj_, JavaMethods_[JM_DIRECT_GET_ROWS].methodID, 
-             j_tid, j_rowIDLen, jRowIDs, j_cols);
-  if (hbs_) {
-      hbs_->incMaxHbaseIOTime(hbs_->getTimer().stop());
-      hbs_->incHbaseCalls();
-  }
-
-  jenv_->DeleteLocalRef(jRowIDs);  
-  if (j_cols != NULL)
-     jenv_->DeleteLocalRef(j_cols);  
-
-  if (jenv_->ExceptionCheck())
-  {
-    getExceptionDetails();
-    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-    logError(CAT_SQL_HBASE, "HTableClient_JNI::getRows()", getLastError());
-    jenv_->PopLocalFrame(NULL);
-    return HTC_ERROR_GETROWS_EXCEPTION;
-  }
-
-  if (jresult == 0) 
-     setNumRowsReturned(-1);
-  else
-     setNumRowsReturned(jresult);
-  jenv_->PopLocalFrame(NULL);
-  return HTC_OK;
-}
-
-//////////////////////////////////////////////////////////////////////////////
 //
 //////////////////////////////////////////////////////////////////////////////
 HTC_RetCode HTableClient_JNI::setWriteBufferSize(Int64 size)

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/9d42c620/core/sql/executor/HBaseClient_JNI.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/HBaseClient_JNI.h b/core/sql/executor/HBaseClient_JNI.h
index 18c981f..6941069 100644
--- a/core/sql/executor/HBaseClient_JNI.h
+++ b/core/sql/executor/HBaseClient_JNI.h
@@ -180,8 +180,6 @@ typedef enum {
  ,HTC_GET_COLVAL_EXCEPTION
  ,HTC_GET_ROWID_EXCEPTION
  ,HTC_NEXTCELL_EXCEPTION
- ,HTC_ERROR_GETROWS_PARAM
- ,HTC_ERROR_GETROWS_EXCEPTION
  ,HTC_ERROR_COMPLETEASYNCOPERATION_EXCEPTION
  ,HTC_ERROR_ASYNC_OPERATION_NOT_COMPLETE
  ,HTC_ERROR_WRITETOWAL_EXCEPTION
@@ -259,7 +257,6 @@ public:
 			char * tmpLoc = NULL,
 			Lng32 espNum = 0,
                         Lng32 versions = 0);
-  HTC_RetCode getRows(Int64 transID, short rowIDLen, HbaseStr &rowIDs, const LIST(HbaseStr)& columns);
   HTC_RetCode deleteRow(Int64 transID, HbaseStr &rowID, const LIST(HbaseStr) *columns, Int64 timestamp);
   HTC_RetCode setWriteBufferSize(Int64 size);
   HTC_RetCode setWriteToWAL(bool vWAL);
@@ -361,7 +358,6 @@ private:
    ,JM_SET_WB_SIZE
    ,JM_SET_WRITE_TO_WAL
    ,JM_FETCH_ROWS
-   ,JM_DIRECT_GET_ROWS
    ,JM_COMPLETE_PUT
    ,JM_GETBEGINKEYS
    ,JM_LAST
@@ -549,7 +545,8 @@ public:
             ExHbaseAccessStats *hbs, Int64 transID, const HbaseStr& rowID, 
             const LIST(HbaseStr) & cols, Int64 timestamp);
   HTableClient_JNI *startGets(NAHeap *heap, const char* tableName, bool useTRex, 
-            ExHbaseAccessStats *hbs, Int64 transID, const LIST(HbaseStr)& rowIDs, 
+            ExHbaseAccessStats *hbs, Int64 transID, const LIST(HbaseStr) *rowIDs, 
+            short rowIDLen, const HbaseStr *rowIDsInDB, 
             const LIST(HbaseStr) & cols, Int64 timestamp);
   HBC_RetCode incrCounter( const char * tabName, const char * rowId, const char * famName, 
                  const char * qualName , Int64 incr, Int64 & count);
@@ -614,6 +611,7 @@ private:
    ,JM_SET_ARC_PERMS
    ,JM_START_GET
    ,JM_START_GETS
+   ,JM_START_DIRECT_GETS
    ,JM_GET_HBTI
    ,JM_CREATE_COUNTER_TABLE  
    ,JM_INCR_COUNTER

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/9d42c620/core/sql/exp/ExpHbaseInterface.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpHbaseInterface.cpp b/core/sql/exp/ExpHbaseInterface.cpp
index 6bff7b0..f457bf0 100644
--- a/core/sql/exp/ExpHbaseInterface.cpp
+++ b/core/sql/exp/ExpHbaseInterface.cpp
@@ -688,16 +688,6 @@ Lng32 ExpHbaseInterface_JNI::scanClose()
   return HBASE_ACCESS_SUCCESS;
 }
 
-Lng32 ExpHbaseInterface_JNI::getHTableClient(HbaseStr &tblName)
-{
-  htc_ = client_->getHTableClient((NAHeap *)heap_, tblName.val, useTRex_, hbs_);
-  if (htc_ == NULL) {
-    retCode_ = HBC_ERROR_GET_HTC_EXCEPTION;
-    return HBASE_OPEN_ERROR;
-  }
-  return HBASE_ACCESS_SUCCESS;
-}
-
 //----------------------------------------------------------------------------
 Lng32 ExpHbaseInterface_JNI::getRowOpen(
 	HbaseStr &tblName,
@@ -719,13 +709,13 @@ Lng32 ExpHbaseInterface_JNI::getRowOpen(
 //----------------------------------------------------------------------------
 Lng32 ExpHbaseInterface_JNI::getRowsOpen(
 	HbaseStr &tblName,
-	const LIST(HbaseStr) & rows, 
+	const LIST(HbaseStr) *rows, 
 	const LIST(HbaseStr) & columns,
 	const int64_t timestamp)
 {
   Int64 transID = getTransactionIDFromContext();
   htc_ = client_->startGets((NAHeap *)heap_, (char *)tblName.val, useTRex_, hbs_, 
-                       transID, rows, columns, timestamp);
+                       transID, rows, 0, NULL, columns, timestamp);
   if (htc_ == NULL) {
     retCode_ = HBC_ERROR_GET_HTC_EXCEPTION;
     return HBASE_OPEN_ERROR;
@@ -880,21 +870,21 @@ Lng32 ExpHbaseInterface_JNI::insertRows(
 }
 
 //----------------------------------------------------------------------------
-Lng32 ExpHbaseInterface_JNI::getRows(
+Lng32 ExpHbaseInterface_JNI::getRowsOpen(
+          HbaseStr tblName,
           short rowIDLen,
-          HbaseStr &rowIDs,
+          HbaseStr rowIDs,
 	  const LIST(HbaseStr) & columns)
 {
-  ex_assert(htc_ != NULL, "htc_ is null");
   Int64 transID;
   transID = getTransactionIDFromContext();
-  retCode_ = htc_->getRows(transID, rowIDLen, rowIDs, columns);
-
-
-  if (retCode_ != HBC_OK)
-    return -HBASE_ACCESS_ERROR;
-  else
-    return HBASE_ACCESS_SUCCESS;
+  htc_ = client_->startGets((NAHeap *)heap_, (char *)tblName.val, useTRex_, hbs_,
+                       transID, NULL, rowIDLen, &rowIDs, columns, -1);
+  if (htc_ == NULL) {
+    retCode_ = HBC_ERROR_GET_HTC_EXCEPTION;
+    return HBASE_OPEN_ERROR;
+  }
+  return HBASE_ACCESS_SUCCESS;
 }
 
 Lng32 ExpHbaseInterface_JNI::setWriteBufferSize(

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/9d42c620/core/sql/exp/ExpHbaseInterface.h
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpHbaseInterface.h b/core/sql/exp/ExpHbaseInterface.h
index 069900f..a0f44ee 100644
--- a/core/sql/exp/ExpHbaseInterface.h
+++ b/core/sql/exp/ExpHbaseInterface.h
@@ -164,8 +164,6 @@ class ExpHbaseInterface : public NABasicObject
 
   virtual Lng32 scanClose() = 0;
 
-  virtual Lng32 getHTableClient(HbaseStr &tblName) = 0;
-
   Lng32 fetchAllRows(
 		     HbaseStr &tblName,
 		     Lng32 numCols,
@@ -187,7 +185,7 @@ class ExpHbaseInterface : public NABasicObject
 
  virtual Lng32 getRowsOpen(
 		HbaseStr &tblName,
-		const LIST(HbaseStr) & rows, 
+		const LIST(HbaseStr) *rows, 
 		const LIST(HbaseStr) & columns,
 		const int64_t timestamp) = 0;
 
@@ -255,9 +253,10 @@ class ExpHbaseInterface : public NABasicObject
 		  const int64_t timestamp,
                   NABoolean asyncOperation) = 0;
 
- virtual Lng32 getRows(
+ virtual Lng32 getRowsOpen(
+          HbaseStr tblName,
           short rowIDLen,
-          HbaseStr &rowIDs,
+          HbaseStr rowIDs,
           const LIST(HbaseStr) & columns) = 0;
 
  virtual Lng32 insertRows(
@@ -474,8 +473,6 @@ class ExpHbaseInterface_JNI : public ExpHbaseInterface
 
   virtual Lng32 scanClose();
 
-  virtual Lng32 getHTableClient(HbaseStr &tblName);
-
   // return 1 if table is empty, 0 if not empty. -ve num in case of error
   virtual Lng32 isEmpty(HbaseStr &tblName);
 
@@ -487,7 +484,7 @@ class ExpHbaseInterface_JNI : public ExpHbaseInterface
  
  virtual Lng32 getRowsOpen(
 		HbaseStr &tblName,
-		const LIST(HbaseStr) & rows, 
+		const LIST(HbaseStr) *rows, 
 		const LIST(HbaseStr) & columns,
 		const int64_t timestamp);
 
@@ -553,9 +550,10 @@ class ExpHbaseInterface_JNI : public ExpHbaseInterface
 		  const int64_t timestamp,
                   NABoolean asyncOperation);
 
- virtual Lng32 getRows(
+ virtual Lng32 getRowsOpen(
+          HbaseStr tblName,
           short rowIDLen,
-          HbaseStr &rowIDs,
+          HbaseStr rowIDs,
           const LIST(HbaseStr) & columns);
 
  virtual Lng32 insertRows(


[2/2] incubator-trafodion git commit: Merge remote branch 'origin/pr/55/head' into mrg_37

Posted by su...@apache.org.
Merge remote branch 'origin/pr/55/head' into mrg_37


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

Branch: refs/heads/master
Commit: d35f77e1c5d7e5efac41820cf68758bd14703099
Parents: 3cb15c3 9d42c62
Author: Suresh Subbiah <su...@apache.org>
Authored: Fri Aug 14 16:04:31 2015 +0000
Committer: Suresh Subbiah <su...@apache.org>
Committed: Fri Aug 14 16:04:31 2015 +0000

----------------------------------------------------------------------
 core/sql/executor/ExHbaseIUD.cpp      |  33 +++----
 core/sql/executor/ExHbaseSelect.cpp   |   6 +-
 core/sql/executor/HBaseClient.java    |   7 ++
 core/sql/executor/HBaseClient_JNI.cpp | 152 ++++++++---------------------
 core/sql/executor/HBaseClient_JNI.h   |   8 +-
 core/sql/exp/ExpHbaseInterface.cpp    |  34 +++----
 core/sql/exp/ExpHbaseInterface.h      |  18 ++--
 7 files changed, 87 insertions(+), 171 deletions(-)
----------------------------------------------------------------------