[01/26] carbondata git commit: [CARBONDATA-3108][CARBONDATA-3044] Fix the error of jvm will crash when CarbonRow use wrong index number in CSDK [Forced Update!]
Repository: carbondata Updated Branches: refs/heads/branch-1.5 5ab58ec85 -> 920f05749 (forced update) [CARBONDATA-3108][CARBONDATA-3044] Fix the error of jvm will crash when CarbonRow use wrong index number in CSDK 1. fix the error of jvm will crash when CarbonRow use wrong index number in CSDK including getString, getVarchar, getArray, getDecimal 2. delete/release the data after running 3. init the variable to NULL This closes #2929 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/de45e72f Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/de45e72f Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/de45e72f Branch: refs/heads/branch-1.5 Commit: de45e72f2e455f55f7cd1499f500eb369da9dc9a Parents: f55857c Author: xubo245 Authored: Mon Nov 19 22:48:31 2018 +0800 Committer: ravipesala Committed: Fri Nov 30 21:55:16 2018 +0530 -- store/CSDK/src/CarbonReader.cpp | 7 +- store/CSDK/src/CarbonReader.h | 5 + store/CSDK/src/CarbonRow.cpp| 60 +++-- store/CSDK/src/CarbonRow.h | 6 + store/CSDK/src/CarbonWriter.cpp | 3 + store/CSDK/test/main.cpp| 124 +++ .../org/apache/carbondata/sdk/file/RowUtil.java | 7 +- 7 files changed, 177 insertions(+), 35 deletions(-) -- http://git-wip-us.apache.org/repos/asf/carbondata/blob/de45e72f/store/CSDK/src/CarbonReader.cpp -- diff --git a/store/CSDK/src/CarbonReader.cpp b/store/CSDK/src/CarbonReader.cpp index 8375b73..8ee65d0 100644 --- a/store/CSDK/src/CarbonReader.cpp +++ b/store/CSDK/src/CarbonReader.cpp @@ -31,7 +31,7 @@ void CarbonReader::builder(JNIEnv *env, char *path, char *tableName) { throw std::runtime_error("tableName parameter can't be NULL."); } jniEnv = env; -jclass carbonReaderClass = env->FindClass("org/apache/carbondata/sdk/file/CarbonReader"); +carbonReaderClass = env->FindClass("org/apache/carbondata/sdk/file/CarbonReader"); if (carbonReaderClass == NULL) { throw std::runtime_error("Can't find the class in java: org/apache/carbondata/sdk/file/CarbonReader"); } @@ -56,7 +56,7 @@ void CarbonReader::builder(JNIEnv *env, char *path) { throw std::runtime_error("path parameter can't be NULL."); } jniEnv = env; -jclass carbonReaderClass = env->FindClass("org/apache/carbondata/sdk/file/CarbonReader"); +carbonReaderClass = env->FindClass("org/apache/carbondata/sdk/file/CarbonReader"); if (carbonReaderClass == NULL) { throw std::runtime_error("Can't find the class in java: org/apache/carbondata/sdk/file/CarbonReader"); } @@ -230,4 +230,7 @@ void CarbonReader::close() { if (jniEnv->ExceptionCheck()) { throw jniEnv->ExceptionOccurred(); } +jniEnv->DeleteLocalRef(carbonReaderBuilderObject); +jniEnv->DeleteLocalRef(carbonReaderObject); +jniEnv->DeleteLocalRef(carbonReaderClass); } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/carbondata/blob/de45e72f/store/CSDK/src/CarbonReader.h -- diff --git a/store/CSDK/src/CarbonReader.h b/store/CSDK/src/CarbonReader.h index 246e24b..9a1daeb 100644 --- a/store/CSDK/src/CarbonReader.h +++ b/store/CSDK/src/CarbonReader.h @@ -46,6 +46,11 @@ private: jobject carbonReaderObject = NULL; /** +* carbonReader class for reading data +*/ +jclass carbonReaderClass = NULL; + +/** * Return true if carbonReaderBuilder Object isn't NULL * Throw exception if carbonReaderBuilder Object is NULL * http://git-wip-us.apache.org/repos/asf/carbondata/blob/de45e72f/store/CSDK/src/CarbonRow.cpp -- diff --git a/store/CSDK/src/CarbonRow.cpp b/store/CSDK/src/CarbonRow.cpp index f7066ec..45cf8f6 100644 --- a/store/CSDK/src/CarbonRow.cpp +++ b/store/CSDK/src/CarbonRow.cpp @@ -87,6 +87,9 @@ CarbonRow::CarbonRow(JNIEnv *env) { if (getArrayId == NULL) { throw std::runtime_error("Can't find the method in java: getArray"); } +if (jniEnv->ExceptionCheck()) { +throw jniEnv->ExceptionOccurred(); +} } void CarbonRow::setCarbonRow(jobject data) { @@ -114,7 +117,11 @@ short CarbonRow::getShort(int ordinal) { jvalue args[2]; args[0].l = carbonRow; args[1].i = ordinal; -return jniEnv->CallStaticShortMethodA(rowUtilClass, getShortId, args); +short result = jniEnv->CallStaticShortMethodA(rowUtilClass, getShortId, args); +if (jniEnv->ExceptionCheck()) { +throw jniEnv->ExceptionOccurred(); +} +return result; }
carbondata git commit: [CARBONDATA-3108][CARBONDATA-3044] Fix the error of jvm will crash when CarbonRow use wrong index number in CSDK
Repository: carbondata Updated Branches: refs/heads/master b8d602598 -> 0fa0a96c4 [CARBONDATA-3108][CARBONDATA-3044] Fix the error of jvm will crash when CarbonRow use wrong index number in CSDK 1. fix the error of jvm will crash when CarbonRow use wrong index number in CSDK including getString, getVarchar, getArray, getDecimal 2. delete/release the data after running 3. init the variable to NULL This closes #2929 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/0fa0a96c Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/0fa0a96c Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/0fa0a96c Branch: refs/heads/master Commit: 0fa0a96c4d55e4bba9bdf118fa7c3e37cd4713a7 Parents: b8d6025 Author: xubo245 Authored: Mon Nov 19 22:48:31 2018 +0800 Committer: kunal642 Committed: Wed Nov 21 23:04:07 2018 +0530 -- store/CSDK/src/CarbonReader.cpp | 7 +- store/CSDK/src/CarbonReader.h | 5 + store/CSDK/src/CarbonRow.cpp| 60 +++-- store/CSDK/src/CarbonRow.h | 6 + store/CSDK/src/CarbonWriter.cpp | 3 + store/CSDK/test/main.cpp| 124 +++ .../org/apache/carbondata/sdk/file/RowUtil.java | 7 +- 7 files changed, 177 insertions(+), 35 deletions(-) -- http://git-wip-us.apache.org/repos/asf/carbondata/blob/0fa0a96c/store/CSDK/src/CarbonReader.cpp -- diff --git a/store/CSDK/src/CarbonReader.cpp b/store/CSDK/src/CarbonReader.cpp index 8375b73..8ee65d0 100644 --- a/store/CSDK/src/CarbonReader.cpp +++ b/store/CSDK/src/CarbonReader.cpp @@ -31,7 +31,7 @@ void CarbonReader::builder(JNIEnv *env, char *path, char *tableName) { throw std::runtime_error("tableName parameter can't be NULL."); } jniEnv = env; -jclass carbonReaderClass = env->FindClass("org/apache/carbondata/sdk/file/CarbonReader"); +carbonReaderClass = env->FindClass("org/apache/carbondata/sdk/file/CarbonReader"); if (carbonReaderClass == NULL) { throw std::runtime_error("Can't find the class in java: org/apache/carbondata/sdk/file/CarbonReader"); } @@ -56,7 +56,7 @@ void CarbonReader::builder(JNIEnv *env, char *path) { throw std::runtime_error("path parameter can't be NULL."); } jniEnv = env; -jclass carbonReaderClass = env->FindClass("org/apache/carbondata/sdk/file/CarbonReader"); +carbonReaderClass = env->FindClass("org/apache/carbondata/sdk/file/CarbonReader"); if (carbonReaderClass == NULL) { throw std::runtime_error("Can't find the class in java: org/apache/carbondata/sdk/file/CarbonReader"); } @@ -230,4 +230,7 @@ void CarbonReader::close() { if (jniEnv->ExceptionCheck()) { throw jniEnv->ExceptionOccurred(); } +jniEnv->DeleteLocalRef(carbonReaderBuilderObject); +jniEnv->DeleteLocalRef(carbonReaderObject); +jniEnv->DeleteLocalRef(carbonReaderClass); } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/carbondata/blob/0fa0a96c/store/CSDK/src/CarbonReader.h -- diff --git a/store/CSDK/src/CarbonReader.h b/store/CSDK/src/CarbonReader.h index 246e24b..9a1daeb 100644 --- a/store/CSDK/src/CarbonReader.h +++ b/store/CSDK/src/CarbonReader.h @@ -46,6 +46,11 @@ private: jobject carbonReaderObject = NULL; /** +* carbonReader class for reading data +*/ +jclass carbonReaderClass = NULL; + +/** * Return true if carbonReaderBuilder Object isn't NULL * Throw exception if carbonReaderBuilder Object is NULL * http://git-wip-us.apache.org/repos/asf/carbondata/blob/0fa0a96c/store/CSDK/src/CarbonRow.cpp -- diff --git a/store/CSDK/src/CarbonRow.cpp b/store/CSDK/src/CarbonRow.cpp index f7066ec..45cf8f6 100644 --- a/store/CSDK/src/CarbonRow.cpp +++ b/store/CSDK/src/CarbonRow.cpp @@ -87,6 +87,9 @@ CarbonRow::CarbonRow(JNIEnv *env) { if (getArrayId == NULL) { throw std::runtime_error("Can't find the method in java: getArray"); } +if (jniEnv->ExceptionCheck()) { +throw jniEnv->ExceptionOccurred(); +} } void CarbonRow::setCarbonRow(jobject data) { @@ -114,7 +117,11 @@ short CarbonRow::getShort(int ordinal) { jvalue args[2]; args[0].l = carbonRow; args[1].i = ordinal; -return jniEnv->CallStaticShortMethodA(rowUtilClass, getShortId, args); +short result = jniEnv->CallStaticShortMethodA(rowUtilClass, getShortId, args); +if (jniEnv->ExceptionCheck()) { +throw jniEnv->ExceptionOccurred(); +} +return result; } int CarbonRow::getInt(int