Commit cb6d518d authored by dli@dev3-76.dev.cn.tlan's avatar dli@dev3-76.dev.cn.tlan
Browse files

Fix for BUG#21345, Error in cluster logfile rotation.

Fixed the cluster logfile rotation code, let the cluster logfile be renamed correctly when the main logfile exceeds the configured maximum size.
parent 50ae5b79
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -28,6 +28,14 @@
class File_class
{
public:
  /**
   * Returns time for last contents modification of a file.
   *
   * @param aFileName a filename to check.
   * @return the time for last contents modificaton of the file.
   */
  static time_t mtime(const char* aFileName);      

  /**
   * Returns true if the file exist.
   *
+10 −1
Original line number Diff line number Diff line
@@ -147,6 +147,7 @@ FileLogHandler::createNewFile()
  bool rc = true;	
  int fileNo = 1;
  char newName[PATH_MAX];
  time_t newMtime, preMtime = 0;

  do
  {
@@ -159,7 +160,15 @@ FileLogHandler::createNewFile()
    }		
    BaseString::snprintf(newName, sizeof(newName),
	       "%s.%d", m_pLogFile->getName(), fileNo++); 
    
    newMtime = File_class::mtime(newName);
    if (newMtime < preMtime) 
    {
      break;
    }
    else
    {
      preMtime = newMtime;
    }
  } while (File_class::exists(newName));
  
  m_pLogFile->close();	
+12 −0
Original line number Diff line number Diff line
@@ -24,6 +24,18 @@
//
// PUBLIC
//
time_t 
File_class::mtime(const char* aFileName)
{
  MY_STAT stmp;
  time_t rc = 0;

  if (my_stat(aFileName, &stmp, MYF(0)) != NULL) {
    rc = stmp.st_mtime;
  }

  return rc;
}

bool 
File_class::exists(const char* aFileName)