[ 
https://issues.apache.org/jira/browse/TRAFODION-2495?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sandhya Sundaresan resolved TRAFODION-2495.
-------------------------------------------
    Resolution: Fixed

> 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)

Reply via email to