diff -up akonadi-1.1.1/server/src/akonadi.cpp.startup akonadi-1.1.1/server/src/akonadi.cpp
--- akonadi-1.1.1/server/src/akonadi.cpp.startup 2009-01-21 12:29:03.000000000 -0600
+++ akonadi-1.1.1/server/src/akonadi.cpp 2009-02-24 11:58:47.000000000 -0600
@@ -226,24 +226,30 @@ void AkonadiServer::startDatabaseProcess
if ( globalConfig.isEmpty() )
akFatal() << "Did not find MySQL server default configuration (mysql-global.conf)";
QFile globalFile( globalConfig );
- QFile actualFile( actualConfig );
- if ( globalFile.open( QFile::ReadOnly ) && actualFile.open( QFile::WriteOnly ) ) {
+ QFile localFile ( localConfig );
+ QFile actualFile ( actualConfig );
+ bool confUpdate = false;
+ // update conf only if either global (or local) is newer than actual
+ if ( ( ( QFileInfo(globalFile).lastModified() > QFileInfo(actualFile).lastModified()) ||
+ ( QFileInfo(localFile).lastModified() > QFileInfo(actualFile).lastModified()) ) &&
+ ( globalFile.open( QFile::ReadOnly ) && actualFile.open( QFile::WriteOnly ) ) ) {
actualFile.write( globalFile.readAll() );
if ( !localConfig.isEmpty() ) {
- QFile localFile( localConfig );
if ( localFile.open( QFile::ReadOnly ) ) {
actualFile.write( localFile.readAll() );
- localFile.close();
}
}
- actualFile.close();
- globalFile.close();
+ confUpdate = true;
} else {
akError() << "Unable to create MySQL server configuration file.";
akError() << "This means that either the default configuration file (mysql-global.conf) was not readable";
akFatal() << "or the target file (mysql.conf) could not be written.";
}
+ globalFile.close();
+ localFile.close();
+ actualFile.close();
+
// MySQL doesn't like world writeable config files (which makes sense), but
// our config file somehow ends up being world-writable on some systems for no
// apparent reason nevertheless, so fix that
@@ -276,6 +282,12 @@ void AkonadiServer::startDatabaseProcess
}
}
+ // clear mysql ib_logfile's in case innodb_log_file_size option changed in last confUpdate
+ if ( confUpdate ) {
+ QFile(dataDir + QDir::separator() + QString::fromLatin1( "ib_logfile0" )).remove();
+ QFile(dataDir + QDir::separator() + QString::fromLatin1( "ib_logfile1" )).remove();
+ }
+
// synthesize the mysqld command
QStringList arguments;
arguments << QString::fromLatin1( "--defaults-file=%1/mysql.conf" ).arg( akDir );