[Database] Fix database version checking edge case issue (#3428)

This commit is contained in:
Chris Miles 2023-06-22 18:00:23 -05:00 committed by GitHub
parent 5249b065d3
commit f2c4babd8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 7 deletions

View File

@ -46,7 +46,7 @@ void DatabaseUpdate::CheckDbUpdates()
InjectBotsVersionColumn(); InjectBotsVersionColumn();
auto v = GetDatabaseVersions(); auto v = GetDatabaseVersions();
auto b = GetBinaryDatabaseVersions(); auto b = GetBinaryDatabaseVersions();
if (CheckVersions(v, b)) { if (CheckVersionsUpToDate(v, b)) {
return; return;
} }
@ -247,7 +247,7 @@ DatabaseUpdate *DatabaseUpdate::SetDatabase(Database *db)
return this; return this;
} }
bool DatabaseUpdate::CheckVersions(DatabaseVersion v, DatabaseVersion b) bool DatabaseUpdate::CheckVersionsUpToDate(DatabaseVersion v, DatabaseVersion b)
{ {
LogInfo("{}", Strings::Repeat("-", BREAK_LENGTH)); LogInfo("{}", Strings::Repeat("-", BREAK_LENGTH));
@ -259,7 +259,7 @@ bool DatabaseUpdate::CheckVersions(DatabaseVersion v, DatabaseVersion b)
(v.server_database_version == b.server_database_version) ? "up to date" : "checking updates" (v.server_database_version == b.server_database_version) ? "up to date" : "checking updates"
); );
if (b.bots_database_version > 0) { if (RuleB(Bots, Enabled) && b.bots_database_version > 0) {
LogInfo( LogInfo(
"{:>8} | database [{}] binary [{}] {}", "{:>8} | database [{}] binary [{}] {}",
"Bots", "Bots",
@ -273,8 +273,12 @@ bool DatabaseUpdate::CheckVersions(DatabaseVersion v, DatabaseVersion b)
LogInfo("{}", Strings::Repeat("-", BREAK_LENGTH)); LogInfo("{}", Strings::Repeat("-", BREAK_LENGTH));
return (v.server_database_version == b.server_database_version) && // server database version is required
(v.bots_database_version == b.bots_database_version); bool server_up_to_date = v.server_database_version == b.server_database_version;
// bots database version is optional, if not enabled then it is always up-to-date
bool bots_up_to_date = RuleB(Bots, Enabled) ? v.bots_database_version == b.bots_database_version : true;
return server_up_to_date && bots_up_to_date;
} }
// checks to see if there are pending updates // checks to see if there are pending updates
@ -284,7 +288,7 @@ bool DatabaseUpdate::HasPendingUpdates()
auto v = GetDatabaseVersions(); auto v = GetDatabaseVersions();
auto b = GetBinaryDatabaseVersions(); auto b = GetBinaryDatabaseVersions();
return !CheckVersions(v, b); return !CheckVersionsUpToDate(v, b);
} }
void DatabaseUpdate::InjectBotsVersionColumn() void DatabaseUpdate::InjectBotsVersionColumn()

View File

@ -30,7 +30,7 @@ public:
bool HasPendingUpdates(); bool HasPendingUpdates();
private: private:
Database *m_database; Database *m_database;
static bool CheckVersions(DatabaseVersion v, DatabaseVersion b); static bool CheckVersionsUpToDate(DatabaseVersion v, DatabaseVersion b);
void InjectBotsVersionColumn(); void InjectBotsVersionColumn();
}; };