Merge pull request #14082 from Ondsel-Development/issue_13522_fix_read_lock

Core: Add read lock to fix for possible race conditions reading/writing config files
This commit is contained in:
Chris Hennes
2024-05-27 10:41:23 -05:00
committed by GitHub
5 changed files with 67 additions and 13 deletions

View File

@@ -1674,19 +1674,29 @@ void Application::cleanupUnits()
void Application::destruct()
{
// saving system parameter
Base::Console().Log("Saving system parameter...\n");
_pcSysParamMngr->SaveDocument();
if (_pcSysParamMngr->IgnoreSave()) {
Base::Console().Warning("Discard system parameter\n");
}
else {
Base::Console().Log("Saving system parameter...\n");
_pcSysParamMngr->SaveDocument();
Base::Console().Log("Saving system parameter...done\n");
}
// saving the User parameter
Base::Console().Log("Saving system parameter...done\n");
Base::Console().Log("Saving user parameter...\n");
_pcUserParamMngr->SaveDocument();
Base::Console().Log("Saving user parameter...done\n");
if (_pcUserParamMngr->IgnoreSave()) {
Base::Console().Warning("Discard user parameter\n");
}
else {
Base::Console().Log("Saving user parameter...\n");
_pcUserParamMngr->SaveDocument();
Base::Console().Log("Saving user parameter...done\n");
}
// now save all other parameter files
auto& paramMgr = _pcSingleton->mpcPramManager;
for (auto it : paramMgr) {
if ((it.second != _pcSysParamMngr) && (it.second != _pcUserParamMngr)) {
if (it.second->HasSerializer()) {
if (it.second->HasSerializer() && !it.second->IgnoreSave()) {
Base::Console().Log("Saving %s...\n", it.first.c_str());
it.second->SaveDocument();
Base::Console().Log("Saving %s...done\n", it.first.c_str());