From fc03afc85054bee88944f89ee2076b4c6dd64ba7 Mon Sep 17 00:00:00 2001 From: selvaganesang Date: Tue, 10 Apr 2018 21:29:47 +0000 Subject: [PATCH] [TRAFODION-3009] Streamline error handling in Executor utility commands seabase/TEST002 failing with a core file. Yet another attempt to fix this issue. --- core/sql/executor/ExExeUtilCommon.cpp | 3 ++- core/sql/executor/ExExeUtilGet.cpp | 5 ++++- core/sql/src/main/java/org/trafodion/sql/HBaseClient.java | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/sql/executor/ExExeUtilCommon.cpp b/core/sql/executor/ExExeUtilCommon.cpp index 450dd7478a..d6af9a728e 100644 --- a/core/sql/executor/ExExeUtilCommon.cpp +++ b/core/sql/executor/ExExeUtilCommon.cpp @@ -1458,7 +1458,8 @@ short ExExeUtilTcb::alterAuditFlag(NABoolean audited, char * tableName, short ExExeUtilTcb::handleError() { short rc = ex_tcb::handleError(&qparent_, getDiagsArea()); - diagsArea_->deAllocate(); + if (diagsArea_ != NULL) + diagsArea_->deAllocate(); diagsArea_ = NULL; return rc; } diff --git a/core/sql/executor/ExExeUtilGet.cpp b/core/sql/executor/ExExeUtilGet.cpp index 10dd05f7cd..768d08ba53 100644 --- a/core/sql/executor/ExExeUtilGet.cpp +++ b/core/sql/executor/ExExeUtilGet.cpp @@ -6550,8 +6550,11 @@ short ExExeUtilRegionStatsFormatTcb::work() case COLLECT_STATS_: { - if (collectStats(tableName_)) + if (collectStats(tableName_) < 0) { + ExRaiseSqlError(getHeap(), &diagsArea_, -8451, + NULL, NULL, NULL, + getSqlJniErrorStr()); step_ = HANDLE_ERROR_; break; } diff --git a/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java b/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java index e1dce7b24b..ffb42a2626 100644 --- a/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java +++ b/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java @@ -880,7 +880,7 @@ public byte[][] getRegionStats(String tableName) String encodedRegionName = hregInfo.getEncodedName(); String ppRegionName = HRegionInfo.prettyPrint(encodedRegionName); SizeInfo regionSizeInfo = rsc.getRegionSizeInfo(regionName); - String serverNameStr = regionSizeInfo.serverName; + String serverNameStr = ""; int numStores = 0; int numStoreFiles = 0; long storeUncompSize = 0; @@ -890,6 +890,7 @@ public byte[][] getRegionStats(String tableName) long writeRequestsCount = 0; String ppTableName = ""; if (regionSizeInfo != null) { + serverNameStr = regionSizeInfo.serverName; numStores = regionSizeInfo.numStores; numStoreFiles = regionSizeInfo.numStoreFiles; storeUncompSize = regionSizeInfo.storeUncompSize;