[
https://issues.apache.org/jira/browse/TRAFODION-2495?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sandhya Sundaresan reassigned TRAFODION-2495:
---------------------------------------------
Assignee: Sandhya Sundaresan
> HDFS connection issue during LOB creation
> -----------------------------------------
>
> Key: TRAFODION-2495
> URL: https://issues.apache.org/jira/browse/TRAFODION-2495
> Project: Apache Trafodion
> Issue Type: Bug
> Components: sql-exe
> Affects Versions: any
> Reporter: Sandhya Sundaresan
> Assignee: Sandhya Sundaresan
> Fix For: 2.2-incubating
>
>
> In some cases a memory overwrite of the following local variable would cause
> a bad value for hdfsServer to be passed into the LOB interface causing an
> Hdfs error. This was seen intermittently and not always reproducible. The
> code clearly did assume that memory it hadn't allocated would nto be reused
> and that's dangerous. lobHdfsServer needs it's own memory allocated on the
> stack or a heap. If not the ComString newSchName could potentially overwrite
> the memory returned by the call to
> CmpCommon::getDefaultString(LOB_HDFS_SERVER) before gttting passed to the LOB
> interface.
> ----------------------
> const char *lobHdfsServer = CmpCommon::getDefaultString(LOB_HDFS_SERVER);
> Int32 lobHdfsPort = (Lng32)CmpCommon::getDefaultNumeric(LOB_HDFS_PORT);
>
> if (j > 0)
> {
> Int32 rc = sendAllControls(FALSE, FALSE, TRUE);
> //if the table is a volatile table return an error
> if (createTableNode->isVolatile())
> {
> *CmpCommon::diags()
> << DgSqlCode(-CAT_LOB_COLUMN_IN_VOLATILE_TABLE)
> << DgTableName(extTableName);
>
> deallocEHI(ehi);
> processReturn();
> return -1;
> }
> Int64 objUID = getObjectUID(&cliInterface,
> catalogNamePart.data(),
> schemaNamePart.data(),
> objectNamePart.data(),
> COM_BASE_TABLE_OBJECT_LIT);
>
> ComString newSchName = "\"";
> newSchName += catalogNamePart;
> newSchName.append("\".\"");
> newSchName.append(schemaNamePart);
> newSchName += "\"";
> NABoolean lobTrace=FALSE;
> if (getenv("TRACE_LOB_ACTIONS"))
> lobTrace=TRUE;
> rc = SQL_EXEC_LOBddlInterface((char*)newSchName.data(),
> newSchName.length(),
> objUID,
> j,
> LOB_CLI_CREATE,
> lobNumList,
> lobTypList,
> lobLocList,
> (char *)lobHdfsServer,
> lobHdfsPort,
> lobMaxSize,
> lobTrace);
>
> if (rc < 0)
> {
> //sss TBD need to retrive the cli diags here.
> *CmpCommon::diags() << DgSqlCode(-CAT_CREATE_OBJECT_ERROR)
> << DgTableName(extTableName);
> deallocEHI(ehi);
> processReturn();
>
> return -2;
> }
> }
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)