You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by se...@apache.org on 2016/07/21 19:54:37 UTC

[1/2] incubator-trafodion git commit: [TRAFODION-2109] Load with log error rows returns SQL error 2034 at times

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master 24cbb420c -> 825276ea8


[TRAFODION-2109] Load with log error rows returns SQL error 2034 at times

Changed the error at the time of logging into error rows into a warning
so that load can continue.

Also, improved the error reporting to display stack trace when java method call
fails at the time of loading and unloading.


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

Branch: refs/heads/master
Commit: a83287b0e2fce2dd2184c2561d1437aea0abff48
Parents: 81a455e
Author: selvaganesang <se...@esgyn.com>
Authored: Thu Jul 14 21:44:56 2016 +0000
Committer: selvaganesang <se...@apache.org>
Committed: Thu Jul 21 19:16:05 2016 +0000

----------------------------------------------------------------------
 core/sql/bin/SqlciErrors.txt             |   3 +-
 core/sql/executor/ExExeUtilLoad.cpp      |   2 +-
 core/sql/executor/ExFastTransport.cpp    |   2 -
 core/sql/executor/ExHbaseAccess.cpp      |  26 ++-
 core/sql/executor/ExHbaseAccess.h        |   4 +-
 core/sql/executor/ExHbaseIUD.cpp         |  15 +-
 core/sql/executor/ExHdfsScan.cpp         |  17 +-
 core/sql/executor/ExHdfsScan.h           |   1 +
 core/sql/executor/SequenceFileReader.cpp | 263 ++++++++++++--------------
 core/sql/exp/ExpErrorEnums.h             |   1 +
 core/sql/regress/hive/EXPECTED018        |   8 +
 core/sql/regress/hive/FILTER018          |   2 +
 12 files changed, 184 insertions(+), 160 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/bin/SqlciErrors.txt
----------------------------------------------------------------------
diff --git a/core/sql/bin/SqlciErrors.txt b/core/sql/bin/SqlciErrors.txt
index 35557ee..88ea933 100644
--- a/core/sql/bin/SqlciErrors.txt
+++ b/core/sql/bin/SqlciErrors.txt
@@ -1495,6 +1495,7 @@ $1~String1 --------------------------------
 8033 ZZZZZ 99999 ADVANCED MAJOR DBADMIN Explain information is too large to be stored in repository.
 8034 ZZZZZ 99999 ADVANCED MAJOR DBADMIN Column $0~String0 of object $1~string0 does not have a default clause but it is missing in database. This indicates inconsistent data.
 8035 ZZZZZ 99999 ADVANCED MAJOR DBADMIN Truncation of hive table failed. $0~String0
+8036 ZZZZZ 99999 ADVANCED MINOR LOGONLY Error while creating the error logging file or logging the error row to file $0~String0: Details :$1~String1 
 8100 ZZZZZ 99999 BEGINNER MINOR LOGONLY Define $1~string0 does not exist
 8101 23000 99999 BEGINNER MAJOR DBADMIN The operation is prevented by check constraint $0~ConstraintName on table $1~TableName.
 8102 23000 99999 BEGINNER MAJOR DBADMIN The operation is prevented by a unique constraint.
@@ -1564,7 +1565,7 @@ $1~String1 --------------------------------
 8444 ZZZZZ 99999 BEGINNER MAJOR DBADMIN Only one lob handle can be returned by child for data extract.
 8445 ZZZZZ 99999 BEGINNER MAJOR DBADMIN An error occurred during transformation of hdfs row to sql row. Error Detail: $0~string0 
 8446 ZZZZZ 99999 BEGINNER MAJOR DBADMIN An error occurred during hdfs buffer fetch. Error Detail: $0~string0 
-8447 ZZZZZ 99999 BEGINNER MAJOR DBADMIN An error occurred during hdfs access. Error Detail: $0~string0 
+8447 ZZZZZ 99999 BEGINNER MAJOR DBADMIN An error occurred during hdfs access. Error Detail: $0~string0 $1~string1 
 8448 ZZZZZ 99999 BEGINNER MAJOR DBADMIN Unable to access Hbase interface. Call to $0~string0 returned error $1~string1($0~int0). Cause: $2~string2.
 8449 ZZZZZ 99999 BEGINNER MAJOR DBADMIN An invalid HBase table option or option value was specified: ($0~string0 = $1~string1)
 8450 ZZZZZ 99999 BEGINNER MINOR LOGONLY ESP number ($0~Int0) has processed ($1~Int1) transactions of the LRU operation on table $2~String0.

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/executor/ExExeUtilLoad.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilLoad.cpp b/core/sql/executor/ExExeUtilLoad.cpp
index 0a156a7..f1bb391 100644
--- a/core/sql/executor/ExExeUtilLoad.cpp
+++ b/core/sql/executor/ExExeUtilLoad.cpp
@@ -1864,7 +1864,7 @@ void ExExeUtilHBaseBulkUnLoadTcb::createHdfsFileError(Int32 sfwRetCode)
   ComDiagsArea * diagsArea = NULL;
   char* errorMsg = sequenceFileWriter_->getErrorText((SFW_RetCode)sfwRetCode);
   ExRaiseSqlError(getHeap(), &diagsArea, (ExeErrorCode)(8447), NULL,
-                  NULL, NULL, NULL, errorMsg, NULL);
+                  NULL, NULL, NULL, errorMsg, (char *)GetCliGlobals()->currContext()->getJniErrorStr().data());
   ex_queue_entry *pentry_up = qparent_.up->getTailEntry();
   pentry_up->setDiagsArea(diagsArea);
 }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/executor/ExFastTransport.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExFastTransport.cpp b/core/sql/executor/ExFastTransport.cpp
index 0377185..bec43e2 100644
--- a/core/sql/executor/ExFastTransport.cpp
+++ b/core/sql/executor/ExFastTransport.cpp
@@ -1340,7 +1340,6 @@ NABoolean ExHdfsFastExtractTcb::isHdfsCompressed()
 
 void ExHdfsFastExtractTcb::createSequenceFileError(Int32 sfwRetCode)
 {
-#ifndef __EID 
   ContextCli *currContext = GetCliGlobals()->currContext();
 
   ComDiagsArea * diagsArea = NULL;
@@ -1354,7 +1353,6 @@ void ExHdfsFastExtractTcb::createSequenceFileError(Int32 sfwRetCode)
   //ex_queue_entry *pentry_down = qParent_.down->getHeadEntry();
   //pentry_down->setDiagsArea(diagsArea);
   updateWorkATPDiagsArea(diagsArea);
-#endif
 }
 
 ExFastExtractPrivateState::ExFastExtractPrivateState()

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/executor/ExHbaseAccess.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHbaseAccess.cpp b/core/sql/executor/ExHbaseAccess.cpp
index 9a37e27..37f55ea 100644
--- a/core/sql/executor/ExHbaseAccess.cpp
+++ b/core/sql/executor/ExHbaseAccess.cpp
@@ -239,6 +239,7 @@ ExHbaseAccessTcb::ExHbaseAccessTcb(
   , colValVec_(NULL)
   , colValVecSize_(0)
   , colValEntry_(0)
+  , loggingErrorDiags_(NULL)
 {
   Space * space = (glob ? glob->getSpace() : NULL);
   CollHeap * heap = (glob ? glob->getDefaultHeap() : NULL);
@@ -2967,22 +2968,28 @@ void ExHbaseAccessTcb::handleException(NAHeap *heap,
                                     ComCondition *errorCond,
                                     ExpHbaseInterface * ehi,
                                     NABoolean & LoggingFileCreated,
-                                    char *loggingFileName)
+                                    char *loggingFileName,
+                                    ComDiagsArea **loggingErrorDiags)
 {
   Lng32 errorMsgLen = 0;
   charBuf *cBuf = NULL;
   char *errorMsg;
   Lng32 retcode;
 
+  if (*loggingErrorDiags != NULL)
+     return;
+
   if (!LoggingFileCreated) {
      retcode = ehi->hdfsCreateFile(loggingFileName);
      if (retcode == HBASE_ACCESS_SUCCESS)
         LoggingFileCreated = TRUE;
-     else
-        ex_assert(0, "Error while creating the log file");
+     else 
+        goto logErrorReturn;
   }
+  
   retcode = ehi->hdfsWrite(logErrorRow, logErrorRowLen);
-  ex_assert((retcode == HBASE_ACCESS_SUCCESS), "Error while writing the log file");
+  if (retcode != HBASE_ACCESS_SUCCESS) 
+     goto logErrorReturn;
   if (errorCond != NULL) {
      errorMsgLen = errorCond->getMessageLength();
      const NAWcharBuf wBuf((NAWchar*)errorCond->getMessageText(), errorMsgLen, heap);
@@ -2993,9 +3000,18 @@ void ExHbaseAccessTcb::handleException(NAHeap *heap,
      errorMsgLen++;
   }
   else {
-     errorMsgLen = strlen("[UNKNOWN EXCEPTION]\n");
+     errorMsg = (char *)"[UNKNOWN EXCEPTION]\n";
+     errorMsgLen = strlen(errorMsg);
   }
   retcode = ehi->hdfsWrite(errorMsg, errorMsgLen);
+logErrorReturn:
+  if (retcode != HBASE_ACCESS_SUCCESS) {
+     *loggingErrorDiags = ComDiagsArea::allocate(heap);
+     **loggingErrorDiags << DgSqlCode(EXE_ERROR_WHILE_LOGGING)
+                 << DgString0(loggingFileName)
+                 << DgString1((char *)GetCliGlobals()->currContext()->getJniErrorStr().data());
+  }
+  return;
 }
 
 void ExHbaseAccessTcb::incrErrorCount( ExpHbaseInterface * ehi,Int64 & totalExceptionCount,

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/executor/ExHbaseAccess.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHbaseAccess.h b/core/sql/executor/ExHbaseAccess.h
index 9b24125..3ab28c3 100644
--- a/core/sql/executor/ExHbaseAccess.h
+++ b/core/sql/executor/ExHbaseAccess.h
@@ -179,7 +179,8 @@ public:
                           ComCondition *errorCond,
                           ExpHbaseInterface * ehi,
                           NABoolean & LoggingFileCreated,
-                          char * loggingFileName);
+                          char * loggingFileName,
+                          ComDiagsArea **loggingErrorDiags);
   static void buildLoggingPath(const char * loggingLocation,
                                char *logId,
                                const char *tableName,
@@ -497,6 +498,7 @@ protected:
   NABoolean *resultArray_;
   NABoolean asyncOperation_;
   Int32 asyncOperationTimeout_;
+  ComDiagsArea *loggingErrorDiags_;
 
   // Redefined and used by ExHbaseAccessBulkLoadPrepSQTcb.
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/executor/ExHbaseIUD.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHbaseIUD.cpp b/core/sql/executor/ExHbaseIUD.cpp
index 587475d..f5b9af5 100644
--- a/core/sql/executor/ExHbaseIUD.cpp
+++ b/core/sql/executor/ExHbaseIUD.cpp
@@ -1292,7 +1292,6 @@ ExWorkProcRetcode ExHbaseAccessBulkLoadPrepSQTcb::work()
       lastHandledStep_ = NOT_STARTED;
 
       nextRequest_ = qparent_.down->getHeadIndex();
-
       rowsInserted_ = 0;
       step_ = INSERT_INIT;
     }
@@ -1591,7 +1590,7 @@ ExWorkProcRetcode ExHbaseAccessBulkLoadPrepSQTcb::work()
                lastErrorCnd_,
                ehi_,
                LoggingFileCreated_,
-               loggingFileName_);
+               loggingFileName_, &loggingErrorDiags_);
       }
       if (pentry_down->getDiagsArea())
         pentry_down->getDiagsArea()->clear();
@@ -1651,6 +1650,18 @@ ExWorkProcRetcode ExHbaseAccessBulkLoadPrepSQTcb::work()
       case DONE:
       case ALL_DONE:
       {
+        if (step_ == ALL_DONE && eodSeen && (loggingErrorDiags_ != NULL)) {
+	   ex_queue_entry * up_entry = qparent_.up->getTailEntry();
+           ComDiagsArea * diagsArea = up_entry->getDiagsArea();
+           if (!diagsArea)
+            {
+              diagsArea =
+                ComDiagsArea::allocate(getGlobals()->getDefaultHeap());
+              up_entry->setDiagsArea(diagsArea);
+            }
+            diagsArea->mergeAfter(*loggingErrorDiags_);
+            loggingErrorDiags_->clear();
+        }
  
         if (handleDone(rc, (step_ == ALL_DONE ? matches_ : 0)))
           return rc;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/executor/ExHdfsScan.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHdfsScan.cpp b/core/sql/executor/ExHdfsScan.cpp
index ec9f3f8..7f4cf90 100644
--- a/core/sql/executor/ExHdfsScan.cpp
+++ b/core/sql/executor/ExHdfsScan.cpp
@@ -116,6 +116,7 @@ ExHdfsScanTcb::ExHdfsScanTcb(
   , exception_(FALSE)
   , checkRangeDelimiter_(FALSE)
   , dataModCheckDone_(FALSE)
+  , loggingErrorDiags_(NULL)
 {
   Space * space = (glob ? glob->getSpace() : 0);
   CollHeap * heap = (glob ? glob->getDefaultHeap() : 0);
@@ -1311,7 +1312,9 @@ ExWorkProcRetcode ExHdfsScanTcb::work()
                        loggingRowLen, lastErrorCnd_, 
                        ehi_,
                        LoggingFileCreated_,
-                       loggingFileName_);
+                       loggingFileName_,
+                       &loggingErrorDiags_);
+
             
           }
 
@@ -1462,6 +1465,18 @@ ExWorkProcRetcode ExHdfsScanTcb::work()
 	    up_entry->upState.downIndex = qparent_.down->getHeadIndex();
 	    up_entry->upState.status = ex_queue::Q_NO_DATA;
 	    up_entry->upState.setMatchNo(matches_);
+            if (loggingErrorDiags_ != NULL) 
+            {
+               ComDiagsArea * diagsArea = up_entry->getDiagsArea();
+               if (!diagsArea)
+               {
+                  diagsArea =
+                   ComDiagsArea::allocate(getGlobals()->getDefaultHeap());
+                  up_entry->setDiagsArea(diagsArea);
+               }
+               diagsArea->mergeAfter(*loggingErrorDiags_);
+               loggingErrorDiags_->clear();
+            }
 	    qparent_.up->insert();
 	    
 	    qparent_.down->removeHead();

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/executor/ExHdfsScan.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExHdfsScan.h b/core/sql/executor/ExHdfsScan.h
index 9069733..b22f31b 100644
--- a/core/sql/executor/ExHdfsScan.h
+++ b/core/sql/executor/ExHdfsScan.h
@@ -291,6 +291,7 @@ protected:
   NABoolean checkRangeDelimiter_;
 
   NABoolean dataModCheckDone_;
+  ComDiagsArea * loggingErrorDiags_;
 };
 
 class ExOrcScanTcb  : public ExHdfsScanTcb

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/executor/SequenceFileReader.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/SequenceFileReader.cpp b/core/sql/executor/SequenceFileReader.cpp
index 4b93f2a..7a4a5f6 100644
--- a/core/sql/executor/SequenceFileReader.cpp
+++ b/core/sql/executor/SequenceFileReader.cpp
@@ -23,6 +23,7 @@
 
 #include "SequenceFileReader.h"
 #include "QRLogger.h"
+#include "Globals.h"
 
 // ===========================================================================
 // ===== Class SequenceFileReader
@@ -659,32 +660,41 @@ SFW_RetCode SequenceFileWriter::close()
 SFW_RetCode SequenceFileWriter::hdfsCreate(const char* path, NABoolean compress)
 {
   QRLogger::log(CAT_SQL_HDFS_SEQ_FILE_WRITER, LL_DEBUG, "SequenceFileWriter::hdfsCreate(%s) called.", path);
+
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return SFW_ERROR_HDFS_WRITE_EXCEPTION;
+  }
+
   jstring js_path = jenv_->NewStringUTF(path);
-  if (js_path == NULL)
+  if (js_path == NULL) {
+    GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_HDFS_CREATE_PARAM));
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_CREATE_PARAM;
-
+  }
 
   jboolean j_compress = compress;
 
   tsRecentJMFromJNI = JavaMethods_[JM_HDFS_CREATE].jm_full_name;
   jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_HDFS_CREATE].methodID, js_path, j_compress);
 
-  jenv_->DeleteLocalRef(js_path);
-
   if (jenv_->ExceptionCheck())
   {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsCreate()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_CREATE_EXCEPTION;
   }
 
   if (jresult == false)
   {
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsCreaten()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_CREATE_EXCEPTION;
   }
 
+  jenv_->PopLocalFrame(NULL);
   return SFW_OK;
 }
 
@@ -695,35 +705,42 @@ SFW_RetCode SequenceFileWriter::hdfsWrite(const char* data, Int64 len)
 {
   QRLogger::log(CAT_SQL_HDFS_SEQ_FILE_WRITER, LL_DEBUG, "SequenceFileWriter::hdfsWrite(%ld) called.", len);
 
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return SFW_ERROR_HDFS_WRITE_EXCEPTION;
+  }
+
   //Write the requisite bytes into the file
   jbyteArray jbArray = jenv_->NewByteArray( len);
   if (!jbArray) {
-
+    GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_HDFS_WRITE_PARAM));
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_WRITE_PARAM;
   }
   jenv_->SetByteArrayRegion(jbArray, 0, len, (const jbyte*)data);
 
   jlong j_len = len;
-  // String write(java.lang.String);
   tsRecentJMFromJNI = JavaMethods_[JM_HDFS_WRITE].jm_full_name;
   jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_HDFS_WRITE].methodID,jbArray , j_len);
 
-  jenv_->DeleteLocalRef(jbArray);
-
   if (jenv_->ExceptionCheck())
   {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsWrite()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_WRITE_EXCEPTION;
   }
 
   if (jresult == false)
   {
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsWrite()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_WRITE_EXCEPTION;
   }
 
+
+  jenv_->PopLocalFrame(NULL);
   return SFW_OK;
 }
 
@@ -765,186 +782,150 @@ SFW_RetCode SequenceFileWriter::hdfsCleanUnloadPath( const NAString& uldPath)
 {
   QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "SequenceFileWriter::hdfsCleanUnloadPath(%s) called.",
                                                       uldPath.data());
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return SFW_ERROR_HDFS_CLEANUP_EXCEPTION;
+  }
 
   jstring js_UldPath = jenv_->NewStringUTF(uldPath.data());
-   if (js_UldPath == NULL)
-   {
-     //GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_HDFS_MERGE_FILES_PARAM));
-     return SFW_ERROR_HDFS_CLEANUP_PARAM;
-   }
-  if (jenv_->ExceptionCheck())
-  {
-    getExceptionDetails();
-    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsCleanUnloadPath(..) => before calling Java.", getLastError());
-    jenv_->DeleteLocalRef(js_UldPath);
-    return SFW_ERROR_HDFS_CLEANUP_EXCEPTION;
+  if (js_UldPath == NULL) {
+    GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_HDFS_CLEANUP_PARAM));
+    jenv_->PopLocalFrame(NULL);
+    return SFW_ERROR_HDFS_CLEANUP_PARAM;
   }
 
   tsRecentJMFromJNI = JavaMethods_[JM_HDFS_CLEAN_UNLOAD_PATH].jm_full_name;
   jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_HDFS_CLEAN_UNLOAD_PATH].methodID, js_UldPath);
 
-  jenv_->DeleteLocalRef(js_UldPath);
-
   if (jenv_->ExceptionCheck())
   {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsCleanUnloadPath()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_CLEANUP_EXCEPTION;
   }
 
-  if (jresult == false)
-  {
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsCleanUnloadPath()", getLastError());
-    return SFW_ERROR_HDFS_CLEANUP_EXCEPTION;
-  }
-
+  jenv_->PopLocalFrame(NULL);
   return SFW_OK;
 }
-SFW_RetCode    SequenceFileWriter::createSnapshot( const NAString&  tableName, const NAString&  snapshotName)
+
+SFW_RetCode SequenceFileWriter::createSnapshot( const NAString&  tableName, const NAString&  snapshotName)
 {
   QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "SequenceFileWriter::createSnapshot(%s, %s) called.",
       tableName.data(), snapshotName.data());
 
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return SFW_ERROR_CREATE_SNAPSHOT_EXCEPTION;
+  }
+
   jstring js_tableName = jenv_->NewStringUTF(tableName.data());
-   if (js_tableName == NULL)
-   {
+  if (js_tableName == NULL) {
+     GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_CREATE_SNAPSHOT_PARAM));
+     jenv_->PopLocalFrame(NULL);
      return SFW_ERROR_CREATE_SNAPSHOT_PARAM;
-   }
+  }
   jstring js_snapshotName= jenv_->NewStringUTF(snapshotName.data());
-   if (js_snapshotName == NULL)
-   {
-     jenv_->DeleteLocalRef(js_tableName);
+  if (js_snapshotName == NULL) {
+     GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_CREATE_SNAPSHOT_PARAM));
+     jenv_->PopLocalFrame(NULL);
      return SFW_ERROR_CREATE_SNAPSHOT_PARAM;
-   }
-
-  if (jenv_->ExceptionCheck())
-  {
-    getExceptionDetails();
-    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::createSnapshot(..) => before calling Java.", getLastError());
-    jenv_->DeleteLocalRef(js_tableName);
-    jenv_->DeleteLocalRef(js_snapshotName);
-    return SFW_ERROR_CREATE_SNAPSHOT_PARAM;
   }
 
-
   tsRecentJMFromJNI = JavaMethods_[JM_CREATE_SNAPSHOT].jm_full_name;
   jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_CREATE_SNAPSHOT].methodID, js_tableName, js_snapshotName);
 
-  jenv_->DeleteLocalRef(js_tableName);
-  jenv_->DeleteLocalRef(js_snapshotName);
-
   if (jenv_->ExceptionCheck())
   {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
     logError(CAT_SQL_HBASE, "SequenceFileWriter::createSnapshot()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_CREATE_SNAPSHOT_EXCEPTION;
   }
 
-  if (jresult == false)
-  {
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::createSnapshot()", getLastError());
-    return SFW_ERROR_CREATE_SNAPSHOT_EXCEPTION;
-  }
-
+  jenv_->PopLocalFrame(NULL);
   return SFW_OK;
 }
+
 SFW_RetCode SequenceFileWriter::verifySnapshot( const NAString&  tableName, const NAString&  snapshotName,
                                                 NABoolean & exist)
 {
   QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "SequenceFileWriter::verifySnapshot(%s, %s) called.",
       tableName.data(), snapshotName.data());
 
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return SFW_ERROR_VERIFY_SNAPSHOT_EXCEPTION;
+  }
+
   jstring js_tableName = jenv_->NewStringUTF(tableName.data());
-   if (js_tableName == NULL)
-   {
+  if (js_tableName == NULL) {
+     GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_VERIFY_SNAPSHOT_PARAM));
+     jenv_->PopLocalFrame(NULL);
      return SFW_ERROR_VERIFY_SNAPSHOT_PARAM;
-   }
+  }
   jstring js_snapshotName= jenv_->NewStringUTF(snapshotName.data());
-   if (js_snapshotName == NULL)
-   {
-     jenv_->DeleteLocalRef(js_tableName);
+  if (js_snapshotName == NULL) {
+     GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_VERIFY_SNAPSHOT_PARAM));
+     jenv_->PopLocalFrame(NULL);
      return SFW_ERROR_VERIFY_SNAPSHOT_PARAM;
-   }
-
-  if (jenv_->ExceptionCheck())
-  {
-    getExceptionDetails();
-    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::verifySnapshot(..) => before calling Java.", getLastError());
-    jenv_->DeleteLocalRef(js_tableName);
-    jenv_->DeleteLocalRef(js_snapshotName);
-    return SFW_ERROR_VERIFY_SNAPSHOT_PARAM;
   }
 
-
   tsRecentJMFromJNI = JavaMethods_[JM_VERIFY_SNAPSHOT].jm_full_name;
   jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_VERIFY_SNAPSHOT].methodID, js_tableName, js_snapshotName);
 
-  jenv_->DeleteLocalRef(js_tableName);
-  jenv_->DeleteLocalRef(js_snapshotName);
-
   if (jenv_->ExceptionCheck())
   {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
     logError(CAT_SQL_HBASE, "SequenceFileWriter::verifySnapshot()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_VERIFY_SNAPSHOT_EXCEPTION;
   }
 
   exist = jresult;
 
+  jenv_->PopLocalFrame(NULL);
   return SFW_OK;
 }
-SFW_RetCode    SequenceFileWriter::deleteSnapshot( const NAString&  snapshotName)
+
+SFW_RetCode SequenceFileWriter::deleteSnapshot( const NAString&  snapshotName)
 {
   QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "SequenceFileWriter::deleteSnapshot(%s) called.",
       snapshotName.data());
 
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return SFW_ERROR_DELETE_SNAPSHOT_EXCEPTION;
+  }
+
   jstring js_snapshotName= jenv_->NewStringUTF(snapshotName.data());
-   if (js_snapshotName == NULL)
-   {
+  if (js_snapshotName == NULL) {
+     GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_DELETE_SNAPSHOT_PARAM));
+     jenv_->PopLocalFrame(NULL);
      return SFW_ERROR_DELETE_SNAPSHOT_PARAM;
-   }
-
-  if (jenv_->ExceptionCheck())
-  {
-    getExceptionDetails();
-    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::deleteSnapshot(..) => before calling Java.", getLastError());
-    jenv_->DeleteLocalRef(js_snapshotName);
-    return SFW_ERROR_DELETE_SNAPSHOT_PARAM;
   }
 
-
   tsRecentJMFromJNI = JavaMethods_[JM_DELETE_SNAPSHOT].jm_full_name;
   jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_DELETE_SNAPSHOT].methodID, js_snapshotName);
 
-
-  jenv_->DeleteLocalRef(js_snapshotName);
-
   if (jenv_->ExceptionCheck())
   {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
     logError(CAT_SQL_HBASE, "SequenceFileWriter::deleteSnapshot()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_DELETE_SNAPSHOT_EXCEPTION;
   }
 
-  if (jresult == false)
-  {
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::deleteSnapshot()", getLastError());
-    return SFW_ERROR_DELETE_SNAPSHOT_EXCEPTION;
-  }
-
+  jenv_->PopLocalFrame(NULL);
   return SFW_OK;
 }
 
 
-SFW_RetCode    SequenceFileWriter::release( )
+SFW_RetCode SequenceFileWriter::release( )
 {
   QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "SequenceFileWriter::release() called.");
 
@@ -974,93 +955,85 @@ SFW_RetCode SequenceFileWriter::hdfsMergeFiles( const NAString& srcPath,
   QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "SequenceFileWriter::hdfsMergeFiles(%s, %s) called.",
                   srcPath.data(), dstPath.data());
 
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return SFW_ERROR_HDFS_MERGE_FILES_EXCEPTION;
+  }
   jstring js_SrcPath = jenv_->NewStringUTF(srcPath.data());
-   if (js_SrcPath == NULL)
-   {
-     //GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_HDFS_MERGE_FILES_PARAM));
+
+  if (js_SrcPath == NULL) {
+     GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_HDFS_MERGE_FILES_PARAM));
+     jenv_->PopLocalFrame(NULL);
      return SFW_ERROR_HDFS_MERGE_FILES_PARAM;
-   }
+  }
   jstring js_DstPath= jenv_->NewStringUTF(dstPath.data());
-   if (js_DstPath == NULL)
-   {
-     //GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_HDFS_MERGE_FILES_PARAM));
-     jenv_->DeleteLocalRef(js_SrcPath);
+  if (js_DstPath == NULL) {
+     GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_HDFS_MERGE_FILES_PARAM));
+     jenv_->PopLocalFrame(NULL);
      return SFW_ERROR_HDFS_MERGE_FILES_PARAM;
-   }
-
-  if (jenv_->ExceptionCheck())
-  {
-    getExceptionDetails();
-    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsMergeFiles(..) => before calling Java.", getLastError());
-    jenv_->DeleteLocalRef(js_SrcPath);
-    jenv_->DeleteLocalRef(js_DstPath);
-    return SFW_ERROR_HDFS_MERGE_FILES_EXCEPTION;
   }
 
 
   tsRecentJMFromJNI = JavaMethods_[JM_HDFS_MERGE_FILES].jm_full_name;
   jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_HDFS_MERGE_FILES].methodID, js_SrcPath, js_DstPath);
 
-  jenv_->DeleteLocalRef(js_SrcPath);
-  jenv_->DeleteLocalRef(js_DstPath);
-
   if (jenv_->ExceptionCheck())
   {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsMergeFiles()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_MERGE_FILES_EXCEPTION;
   }
 
   if (jresult == false)
   {
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsMergeFiles()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_MERGE_FILES_EXCEPTION;
-  }
+  } 
 
+  jenv_->PopLocalFrame(NULL);
   return SFW_OK;
 }
+
 SFW_RetCode SequenceFileWriter::hdfsDeletePath( const NAString& delPath)
 {
   QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "SequenceFileWriter::hdfsDeletePath(%s called.",
                   delPath.data());
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return SFW_ERROR_HDFS_DELETE_PATH_EXCEPTION;
+  }
 
   jstring js_delPath = jenv_->NewStringUTF(delPath.data());
-   if (js_delPath == NULL)
-   {
+  if (js_delPath == NULL) {
+     GetCliGlobals()->setJniErrorStr(getErrorText(SFW_ERROR_HDFS_DELETE_PATH_PARAM));
+     jenv_->PopLocalFrame(NULL);
      return SFW_ERROR_HDFS_DELETE_PATH_PARAM;
-   }
-
-  if (jenv_->ExceptionCheck())
-  {
-    getExceptionDetails();
-    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsDeletePath(..) => before calling Java.", getLastError());
-    jenv_->DeleteLocalRef(js_delPath);
-    return SFW_ERROR_HDFS_DELETE_PATH_EXCEPTION;
   }
 
 
   tsRecentJMFromJNI = JavaMethods_[JM_HDFS_DELETE_PATH].jm_full_name;
   jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_HDFS_DELETE_PATH].methodID, js_delPath);
 
-  jenv_->DeleteLocalRef(js_delPath);
-
   if (jenv_->ExceptionCheck())
   {
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsDeletePath()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_DELETE_PATH_EXCEPTION;
   }
 
   if (jresult == false)
   {
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsDeletePath()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_DELETE_PATH_EXCEPTION;
   }
 
+  jenv_->PopLocalFrame(NULL);
   return SFW_OK;
 }
 
@@ -1070,25 +1043,20 @@ SFW_RetCode SequenceFileWriter::hdfsExists( const NAString& uldPath, NABoolean &
   QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "SequenceFileWriter::hdfsExists(%s) called.",
                                                       uldPath.data());
 
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return SFW_ERROR_HDFS_EXISTS_EXCEPTION;
+  }
+
   jstring js_UldPath = jenv_->NewStringUTF(uldPath.data());
-   if (js_UldPath == NULL)
-   {
+  if (js_UldPath == NULL) {
+     jenv_->PopLocalFrame(NULL);
      return SFW_ERROR_HDFS_EXISTS_PARAM;
-   }
-  if (jenv_->ExceptionCheck())
-  {
-    getExceptionDetails();
-    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
-    logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsExists(..) => before calling Java.", getLastError());
-    jenv_->DeleteLocalRef(js_UldPath);
-    return SFW_ERROR_HDFS_EXISTS_EXCEPTION;
   }
 
   tsRecentJMFromJNI = JavaMethods_[JM_HDFS_EXISTS].jm_full_name;
   jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_HDFS_EXISTS].methodID, js_UldPath);
 
-  jenv_->DeleteLocalRef(js_UldPath);
-
   exist = jresult;
 
   if (jenv_->ExceptionCheck())
@@ -1096,9 +1064,10 @@ SFW_RetCode SequenceFileWriter::hdfsExists( const NAString& uldPath, NABoolean &
     getExceptionDetails();
     logError(CAT_SQL_HBASE, __FILE__, __LINE__);
     logError(CAT_SQL_HBASE, "SequenceFileWriter::hdfsExists()", getLastError());
+    jenv_->PopLocalFrame(NULL);
     return SFW_ERROR_HDFS_EXISTS_EXCEPTION;
-  }
-
+  } 
 
+  jenv_->PopLocalFrame(NULL);
   return SFW_OK;
 }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/exp/ExpErrorEnums.h
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpErrorEnums.h b/core/sql/exp/ExpErrorEnums.h
index 2336ea0..33437e9 100644
--- a/core/sql/exp/ExpErrorEnums.h
+++ b/core/sql/exp/ExpErrorEnums.h
@@ -79,6 +79,7 @@ enum ExeErrorCode
   EXE_EXPLAIN_PLAN_TOO_LARGE            = 8033,
   EXE_DEFAULT_VALUE_INCONSISTENT_ERROR  = 8034,
   EXE_HIVE_TRUNCATE_ERROR               = 8035,
+  EXE_ERROR_WHILE_LOGGING               = 8036,
 
   // ---------------------------------------------------------------------
   // Data integrity errors

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/regress/hive/EXPECTED018
----------------------------------------------------------------------
diff --git a/core/sql/regress/hive/EXPECTED018 b/core/sql/regress/hive/EXPECTED018
index a0dedea..883e349 100644
--- a/core/sql/regress/hive/EXPECTED018
+++ b/core/sql/regress/hive/EXPECTED018
@@ -2246,6 +2246,14 @@ Task: UNLOAD           Status: Started
 Task:  EXTRACT         Status: Started
 
 *** ERROR[8447] An error occurred during hdfs access. Error Detail: Java exception in hdfsCreate().
+java.io.IOException: No FileSystem for scheme: null
+org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2584)
+org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591)
+org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)
+org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2630)
+org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2612)
+org.apache.hadoop.fs.FileSystem.get(FileSystem.java:370)
+org.trafodion.sql.SequenceFileWriter.hdfsCreate(SequenceFileWriter.java:162)
 
 --- 0 row(s) unloaded.
 >>

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/a83287b0/core/sql/regress/hive/FILTER018
----------------------------------------------------------------------
diff --git a/core/sql/regress/hive/FILTER018 b/core/sql/regress/hive/FILTER018
index 541a1d8..fff0757 100755
--- a/core/sql/regress/hive/FILTER018
+++ b/core/sql/regress/hive/FILTER018
@@ -32,4 +32,6 @@ s/ET:.*/ET:xxxxxxxxxx/g
 s/snapshot_temp_location.*/snapshot_temp_location location/g
 s/\(778224\).*\(778224\)\(.*\)/\1\3/g
 s/\(78431\).*\(78431\)\(.*\)/\1\3/g
+/^org\.apache\.hadoop/d
+/^org\.trafodion/d
 " $fil


[2/2] incubator-trafodion git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-trafodion into mrg_593_2

Posted by se...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-trafodion into mrg_593_2


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

Branch: refs/heads/master
Commit: 825276ea8b1d5d8b466ebebecd57ee3325d7571f
Parents: a83287b 24cbb42
Author: selvaganesang <se...@apache.org>
Authored: Thu Jul 21 19:53:39 2016 +0000
Committer: selvaganesang <se...@apache.org>
Committed: Thu Jul 21 19:53:39 2016 +0000

----------------------------------------------------------------------
 .../transactional/TransactionManager.java       | 29 ++++++++------------
 .../java/org/trafodion/dtm/HBaseTxClient.java   |  9 ++----
 2 files changed, 14 insertions(+), 24 deletions(-)
----------------------------------------------------------------------