[
https://issues.apache.org/jira/browse/TRAFODION-2821?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16269243#comment-16269243
]
ASF GitHub Bot commented on TRAFODION-2821:
-------------------------------------------
Github user selvaganesang commented on a diff in the pull request:
https://github.com/apache/incubator-trafodion/pull/1314#discussion_r153585050
--- Diff: core/sql/executor/OrcFileReader.cpp ---
@@ -236,58 +314,71 @@ OFR_RetCode OrcFileReader::fetchNextRow(char *
buffer, long& array_length, long&
tsRecentJMFromJNI = JavaMethods_[JM_FETCHROW2].jm_full_name;
jobject jresult = (jobject)jenv_->CallObjectMethod(javaObj_,
JavaMethods_[JM_FETCHROW2].methodID);
+ if (jenv_->ExceptionCheck())
+ {
+ getExceptionDetails();
+ logError(CAT_SQL_HDFS_ORC_FILE_READER, __FILE__, __LINE__);
+ logError(CAT_SQL_HDFS_ORC_FILE_READER,
"OrcFileReader::fetchNextRow()", getLastError());
+ jenv_->PopLocalFrame(NULL);
+ return OFR_ERROR_FETCHROW_EXCEPTION;
+ }
if (jresult==NULL && getLastError())
{
- logError(CAT_SQL_HDFS_ORC_FILE_READER,
"OrcFileReader::fetchNextRow()", getLastError());
- return OFR_ERROR_FETCHROW_EXCEPTION;
+ logError(CAT_SQL_HDFS_ORC_FILE_READER,
"OrcFileReader::fetchNextRow()", getLastError());
+ return OFR_ERROR_FETCHROW_EXCEPTION;
}
if (jresult == NULL)
- return (OFR_NOMORE); //No more rows
+ return (OFR_NOMORE); //No more rows
//Retrieve row and associated data
jclass cls = jenv_->GetObjectClass(jresult);
fid = jenv_->GetFieldID(cls,"m_row_length","I");
if (fid ==NULL)
- {
- return (OFR_ERROR_FETCHROW_EXCEPTION);
- }
+ {
+ jenv_->PopLocalFrame(NULL);
+ return (OFR_ERROR_FETCHROW_EXCEPTION);
+ }
jint row_length = (jint)jenv_->GetIntField(jresult, fid);
array_length = (long)row_length;
-
fid = jenv_->GetFieldID(cls,"m_column_count","I");
if (fid ==NULL)
- {
- return(OFR_ERROR_FETCHROW_EXCEPTION);
- }
+ {
+ jenv_->PopLocalFrame(NULL);
+ return(OFR_ERROR_FETCHROW_EXCEPTION);
+ }
jint column_count = (jint)jenv_->GetIntField(jresult, fid);
num_columns = column_count;
fid = jenv_->GetFieldID(cls,"m_row_number","J");
if (fid ==NULL)
- {
- return(OFR_ERROR_FETCHROW_EXCEPTION);
- }
+ {
+ jenv_->PopLocalFrame(NULL);
+ return(OFR_ERROR_FETCHROW_EXCEPTION);
+ }
jlong rowNum = (jlong)jenv_->GetIntField(jresult, fid);
rowNumber = rowNum;
-
-
// Get the actual row (it is a byte array). Use the row_length above to
specify how much to copy
fid = jenv_->GetFieldID(cls,"m_row_ba","[B");
if (fid ==NULL)
- {
- return (OFR_ERROR_FETCHROW_EXCEPTION);
- }
+ {
+ jenv_->PopLocalFrame(NULL);
+ return (OFR_ERROR_FETCHROW_EXCEPTION);
+ }
jbyteArray jrow = (jbyteArray)jenv_->GetObjectField(jresult, fid);
- if (jrow == NULL)
- return (OFR_ERROR_FETCHROW_EXCEPTION);
+ if (jrow == NULL)
+ {
+ jenv_->PopLocalFrame(NULL);
+ return (OFR_ERROR_FETCHROW_EXCEPTION);
+ }
- jenv_->GetByteArrayRegion(jrow, 0, row_length, (jbyte*)buffer);
- jenv_->DeleteLocalRef(jrow);
+ jenv_->GetByteArrayRegion(jrow, 0, row_length, (jbyte*)buffer);
+ jenv_->DeleteLocalRef(jrow);
--- End diff --
Yes. Will remove
> Trafodion core code base needs to be thread safe
> -------------------------------------------------
>
> Key: TRAFODION-2821
> URL: https://issues.apache.org/jira/browse/TRAFODION-2821
> Project: Apache Trafodion
> Issue Type: Improvement
> Components: sql-general
> Affects Versions: any
> Reporter: Selvaganesan Govindarajan
> Assignee: Selvaganesan Govindarajan
> Fix For: 2.3-incubating
>
>
> This is the covering trafodion jira to make trafodion core code base to be
> thread safe. It is needed to ensure that type T2 JDBC driver hosted on
> platform can be enabled to support multi-threaded JDBC applications.
> [TRAFODION-2783] is one such case.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)