mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 13:37:00 +00:00
[8825] At fail start db connections stop all started db connection threads.
This will restore state before start Db function call and prevent crashes at delayed access to log singleton in case outdated DB structure detection.
This commit is contained in:
parent
55e715dddd
commit
bc5fb40867
3 changed files with 39 additions and 1 deletions
|
|
@ -414,12 +414,19 @@ bool Master::_StartDB()
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!WorldDatabase.CheckRequiredField("db_version",REVISION_DB_MANGOS))
|
if(!WorldDatabase.CheckRequiredField("db_version",REVISION_DB_MANGOS))
|
||||||
|
{
|
||||||
|
///- Wait for already started DB delay threads to end
|
||||||
|
WorldDatabase.HaltDelayThread();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
dbstring = sConfig.GetStringDefault("CharacterDatabaseInfo", "");
|
dbstring = sConfig.GetStringDefault("CharacterDatabaseInfo", "");
|
||||||
if(dbstring.empty())
|
if(dbstring.empty())
|
||||||
{
|
{
|
||||||
sLog.outError("Character Database not specified in configuration file");
|
sLog.outError("Character Database not specified in configuration file");
|
||||||
|
|
||||||
|
///- Wait for already started DB delay threads to end
|
||||||
|
WorldDatabase.HaltDelayThread();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
sLog.outString("Character Database: %s", dbstring.c_str());
|
sLog.outString("Character Database: %s", dbstring.c_str());
|
||||||
|
|
@ -428,17 +435,29 @@ bool Master::_StartDB()
|
||||||
if(!CharacterDatabase.Initialize(dbstring.c_str()))
|
if(!CharacterDatabase.Initialize(dbstring.c_str()))
|
||||||
{
|
{
|
||||||
sLog.outError("Cannot connect to Character database %s",dbstring.c_str());
|
sLog.outError("Cannot connect to Character database %s",dbstring.c_str());
|
||||||
|
|
||||||
|
///- Wait for already started DB delay threads to end
|
||||||
|
WorldDatabase.HaltDelayThread();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!CharacterDatabase.CheckRequiredField("character_db_version",REVISION_DB_CHARACTERS))
|
if(!CharacterDatabase.CheckRequiredField("character_db_version",REVISION_DB_CHARACTERS))
|
||||||
|
{
|
||||||
|
///- Wait for already started DB delay threads to end
|
||||||
|
WorldDatabase.HaltDelayThread();
|
||||||
|
CharacterDatabase.HaltDelayThread();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
///- Get login database info from configuration file
|
///- Get login database info from configuration file
|
||||||
dbstring = sConfig.GetStringDefault("LoginDatabaseInfo", "");
|
dbstring = sConfig.GetStringDefault("LoginDatabaseInfo", "");
|
||||||
if(dbstring.empty())
|
if(dbstring.empty())
|
||||||
{
|
{
|
||||||
sLog.outError("Login database not specified in configuration file");
|
sLog.outError("Login database not specified in configuration file");
|
||||||
|
|
||||||
|
///- Wait for already started DB delay threads to end
|
||||||
|
WorldDatabase.HaltDelayThread();
|
||||||
|
CharacterDatabase.HaltDelayThread();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -447,17 +466,32 @@ bool Master::_StartDB()
|
||||||
if(!loginDatabase.Initialize(dbstring.c_str()))
|
if(!loginDatabase.Initialize(dbstring.c_str()))
|
||||||
{
|
{
|
||||||
sLog.outError("Cannot connect to login database %s",dbstring.c_str());
|
sLog.outError("Cannot connect to login database %s",dbstring.c_str());
|
||||||
|
|
||||||
|
///- Wait for already started DB delay threads to end
|
||||||
|
WorldDatabase.HaltDelayThread();
|
||||||
|
CharacterDatabase.HaltDelayThread();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!loginDatabase.CheckRequiredField("realmd_db_version",REVISION_DB_REALMD))
|
if(!loginDatabase.CheckRequiredField("realmd_db_version",REVISION_DB_REALMD))
|
||||||
|
{
|
||||||
|
///- Wait for already started DB delay threads to end
|
||||||
|
WorldDatabase.HaltDelayThread();
|
||||||
|
CharacterDatabase.HaltDelayThread();
|
||||||
|
loginDatabase.HaltDelayThread();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
///- Get the realm Id from the configuration file
|
///- Get the realm Id from the configuration file
|
||||||
realmID = sConfig.GetIntDefault("RealmID", 0);
|
realmID = sConfig.GetIntDefault("RealmID", 0);
|
||||||
if(!realmID)
|
if(!realmID)
|
||||||
{
|
{
|
||||||
sLog.outError("Realm ID not defined in configuration file");
|
sLog.outError("Realm ID not defined in configuration file");
|
||||||
|
|
||||||
|
///- Wait for already started DB delay threads to end
|
||||||
|
WorldDatabase.HaltDelayThread();
|
||||||
|
CharacterDatabase.HaltDelayThread();
|
||||||
|
loginDatabase.HaltDelayThread();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -332,7 +332,11 @@ bool StartDB()
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!loginDatabase.CheckRequiredField("realmd_db_version",REVISION_DB_REALMD))
|
if(!loginDatabase.CheckRequiredField("realmd_db_version",REVISION_DB_REALMD))
|
||||||
|
{
|
||||||
|
///- Wait for already started DB delay threads to end
|
||||||
|
loginDatabase.HaltDelayThread();
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8824"
|
#define REVISION_NR "8825"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue