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.
This commit is contained in:
dli@dev3-76.dev.cn.tlan 2006-09-01 15:32:40 +08:00
parent 50ae5b7989
commit cb6d518d07
3 changed files with 30 additions and 1 deletions

View file

@ -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.
*

View file

@ -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();

View file

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