trafodion-codereview mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From zellerh <...@git.apache.org>
Subject [GitHub] trafodion pull request #1429: [TRAFODION-2927] Refactor and improve UPDATE S...
Date Thu, 01 Feb 2018 02:10:51 GMT
Github user zellerh commented on a diff in the pull request:

    https://github.com/apache/trafodion/pull/1429#discussion_r165243285
  
    --- Diff: core/sql/ustat/hs_log.cpp ---
    @@ -389,44 +371,64 @@ NABoolean HSLogMan::GetLogFile(NAString & path, const char*
cqd_value)
     /*          until either StartLog() or         */
     /*          ClearLog() methods are called.     */
     /***********************************************/
    -void HSLogMan::StartLog(NABoolean needExplain, const char* logFileName)
    +void HSLogMan::StartLog(NABoolean needExplain)
       {
    -    // The GENERATE_EXPLAIN cqd captures explain data pertaining to dynamic
    -    // queries. Ordinarily we want it on, but for just-in-time logging triggered
    -    // by an error, we don't need it, and can't set it because HSFuncExecQuery
    -    // clears the diagnostics area, which causes the error to be lost.
    -    explainOn_ = needExplain;
    -    if (!needExplain ||
    -        HSFuncExecQuery("CONTROL QUERY DEFAULT GENERATE_EXPLAIN 'ON'") == 0)
    +    if (!logNeeded_)  // if logging isn't already on
           {
    -        CollIndex activeNodes = gpClusterInfo->numOfSMPs();
    -        if (logFileName)
    -        {
    -          *logFile_ = logFileName;
    -           currentTimingEvent_ = -1;
    -           startTime_[0] = 0;           /* reset timer           */
    -           logNeeded_ = TRUE;
    -        }
    -        else if(activeNodes > 2)
    -        {//we consider we are running on cluster 
    -         //if gpClusterInfo->numOfSMPs() > 2
    -           NABoolean ret = FALSE;
    -           if(GetLogFile(*logFile_, ActiveSchemaDB()->getDefaults().getValue(USTAT_LOG)))
    -             ret = ContainDirExist(logFile_->data());
    -
    -           if(ret)
    -             logNeeded_ = TRUE;
    -
    -           currentTimingEvent_ = -1;
    -           startTime_[0] = 0;           /* reset timer           */
    -        }
    +        // Construct logfile name incorporating process id and node number. Note that
    +        // the 2nd parameter of processhandle_decompose is named cpu but is actually
    +        // the node number for Seaquest (the 4th param, named nodenumber, is the cluster
    +        // number).
    +        Int32 nodeNum;
    +        Int32 pin;
    +        SB_Phandle_Type procHandle;
    +        XPROCESSHANDLE_GETMINE_(&procHandle);
    +        XPROCESSHANDLE_DECOMPOSE_(&procHandle, &nodeNum, &pin);
    +        long currentTime = (long)time(0);
    +
    +        const size_t MAX_FILENAME_SIZE = 50;
    +        char qualifiers[MAX_FILENAME_SIZE];
    +        sprintf(qualifiers, ".%d.%d.%ld.txt", nodeNum, pin, currentTime);
    +   
    +        std::string logFileName;
    +        QRLogger::getRootLogDirectory(CAT_SQL_USTAT, logFileName /* out */);
    +        if (logFileName.size() > 0)
    +          logFileName += '/';
    +
    +        const char * ustatLog = ActiveSchemaDB()->getDefaults().getValue(USTAT_LOG);
    +        const char * fileNameStem = ustatLog + strlen(ustatLog);
    +        if (ustatLog == fileNameStem) 
    +          fileNameStem = "ULOG";  // CQD USTAT_LOG is the empty string
             else
    -        {
    -          *logFile_ = ActiveSchemaDB()->getDefaults().getValue(USTAT_LOG);
    -           currentTimingEvent_ = -1;
    -           startTime_[0] = 0;           /* reset timer           */
    -           logNeeded_ = TRUE;
    -        }
    +          {
    +            // strip off any directory path name; we will always use the logs directory
    +            // as configured via QRLogger
    +            while ((fileNameStem > ustatLog) && (*(fileNameStem - 1) != '/'))
    +              fileNameStem--;
    +          }
    +
    +        logFileName += fileNameStem;
    +        logFileName += qualifiers;
    +
    +        NABoolean logStarted = QRLogger::startLogFile(CAT_SQL_USTAT,logFileName.c_str());
    --- End diff --
    
    Sorry, never mind, my apologies for being slow, I realize my mistake now. I was looking
at the part that got removed instead of the part that gets retained in fileNameStem.


---

Mime
View raw message