From de490674ff1205d908301b94f5644247562b43cb Mon Sep 17 00:00:00 2001 From: Naios Date: Sat, 4 Apr 2015 23:59:28 +0200 Subject: Core/DBUpdater: Exit clean if a query failed to apply. * Fix some \W4 warnings about constructors. --- src/server/shared/Updater/DBUpdater.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'src/server/shared/Updater/DBUpdater.cpp') diff --git a/src/server/shared/Updater/DBUpdater.cpp b/src/server/shared/Updater/DBUpdater.cpp index 5918fe06b55..e5c571e4517 100644 --- a/src/server/shared/Updater/DBUpdater.cpp +++ b/src/server/shared/Updater/DBUpdater.cpp @@ -239,11 +239,19 @@ bool DBUpdater::Update(DatabaseWorkerPool& pool) [&](Path const& file) { DBUpdater::ApplyFile(pool, file); }, [&](std::string const& query) -> QueryResult { return DBUpdater::Retrieve(pool, query); }); - uint32 const count = updateFetcher.Update( - sConfigMgr->GetBoolDefault("Updates.Redundancy", true), - sConfigMgr->GetBoolDefault("Updates.AllowRehash", true), - sConfigMgr->GetBoolDefault("Updates.ArchivedRedundancy", false), - sConfigMgr->GetIntDefault("Updates.CleanDeadRefMaxCount", 3)); + uint32 count; + try + { + count = updateFetcher.Update( + sConfigMgr->GetBoolDefault("Updates.Redundancy", true), + sConfigMgr->GetBoolDefault("Updates.AllowRehash", true), + sConfigMgr->GetBoolDefault("Updates.ArchivedRedundancy", false), + sConfigMgr->GetIntDefault("Updates.CleanDeadRefMaxCount", 3)); + } + catch (UpdateException&) + { + return false; + } if (!count) TC_LOG_INFO("sql.updates", ">> %s database is up-to-date!", DBUpdater::GetTableName().c_str()); @@ -298,7 +306,14 @@ bool DBUpdater::Populate(DatabaseWorkerPool& pool) // Update database TC_LOG_INFO("sql.updates", ">> Applying \'%s\'...", base.generic_string().c_str()); - ApplyFile(pool, base); + try + { + ApplyFile(pool, base); + } + catch (UpdateException&) + { + return false; + } TC_LOG_INFO("sql.updates", ">> Done!"); return true; -- cgit v1.2.3