in Configurator/Core/Server/ServerConfigurationController.cs [3487:3584]
private bool UpdateConfigFile()
{
CancellationToken.ThrowIfCancellationRequested();
ReportStatus(string.Format(Resources.SavingConfigurationFile, Settings.ConfigFile));
try
{
if (!Directory.Exists(Settings.IniDirectory))
{
Directory.CreateDirectory(Settings.IniDirectory);
}
IniTemplate t = null;
// If this is an upgrade, we want to load the existing ini template, this to ensure that the values
// already configured by the user persist in the new ini file.
if (ConfigurationType == ConfigurationType.Upgrade)
{
t = Settings.GetExistingIniFileTemplate();
// Verify that the Windows service does exist
if (OldSettings.ConfigureAsService
&& !MySqlServiceControlManager.ServiceExists(ExistingServerInstallationInstance.ServiceName)
&& IsThereServerDataFiles
&& !IsServiceRenameNeeded)
{
Settings.ConfigureAsService = false;
}
}
CancellationToken.ThrowIfCancellationRequested();
if (t == null)
{
t = LoadTemplate();
}
if (!Directory.Exists(Settings.SecureFilePrivFolder))
{
Directory.CreateDirectory(Settings.SecureFilePrivFolder);
}
var settings = ConfigurationType == ConfigurationType.Upgrade
? OldSettings
: Settings;
if (ConfigurationType == ConfigurationType.Upgrade
&& IsDataDirectoryRenameNeeded)
{
settings.SecureFilePrivFolder = Settings.SecureFilePrivFolder;
settings.IniDirectory = Settings.IniDirectory;
settings.InstallDirectory = Settings.InstallDirectory;
}
//Set the Query Cache settings if Enterprise Firewall is enabled.
if (settings.Plugins.IsEnabled("mysql_firewall"))
{
settings.EnableQueryCacheType = false;
settings.EnableQueryCacheSize = false;
}
CancellationToken.ThrowIfCancellationRequested();
settings.Save(t);
// If this is an upgrade, we need to run a second pass at updating the ini file but this time comparing
// it against the corresponding template. This to determine if there are new sections, deprecated or new
// variables that need to be added. During this second pass we ignore updating existing values since we
// don't want to override the values defined by the user.
if (ConfigurationType == ConfigurationType.Upgrade)
{
t = LoadTemplate();
settings.Save(t);
}
ReportStatus(string.Format(Resources.SavedConfigurationFile, settings.ConfigFile));
if (!ServerVersion.ServerSupportsRegeneratingRedoLogFiles())
{
return true;
}
//we need to delete
for (int i = 0; i < 2; i++)
{
CancellationToken.ThrowIfCancellationRequested();
string datetime = DateTime.Now.GetDateTimeFormats('s')[0].Replace(':', '-');
string logFile = Path.Combine(DataDirectory, "data", string.Format("ib_logfile{0}", i));
string backupLogFile = Path.Combine(DataDirectory, string.Format("ib_logfile{0}_{1}", i, datetime));
if (File.Exists(logFile))
{
File.Move(logFile, backupLogFile);
}
}
return true;
}
catch (Exception ex)
{
Logger.LogException(ex);
return false;
}
}