diff options
author | Machiavelli <machiavelli.trinity@gmail.com> | 2012-03-26 13:33:47 +0200 |
---|---|---|
committer | Machiavelli <machiavelli.trinity@gmail.com> | 2012-03-26 13:33:47 +0200 |
commit | e960016dc40014a8cc84b5854fa21a5651ae4f2b (patch) | |
tree | 926f131ed9e70897e140b62e6b024a388bee03c7 | |
parent | 70ee37f3b4fef7e2e2859714f25d7a96887c0c23 (diff) |
Partial revert of "Core/DB Layer: Fix a memory leak.", mysql library related stuff. Original memory leak fix is still in place.
-rwxr-xr-x | src/server/authserver/Main.cpp | 2 | ||||
-rw-r--r-- | src/server/shared/Database/DatabaseWorker.cpp | 7 | ||||
-rwxr-xr-x | src/server/shared/Database/DatabaseWorkerPool.h | 3 | ||||
-rwxr-xr-x | src/server/shared/Database/MySQLConnection.cpp | 4 | ||||
-rwxr-xr-x | src/server/worldserver/Master.cpp | 2 |
5 files changed, 7 insertions, 11 deletions
diff --git a/src/server/authserver/Main.cpp b/src/server/authserver/Main.cpp index bd155725465..01a33d836d6 100755 --- a/src/server/authserver/Main.cpp +++ b/src/server/authserver/Main.cpp @@ -246,6 +246,8 @@ extern int main(int argc, char **argv) // Initialize connection to the database bool StartDB() { + MySQL::Library_Init(); + std::string dbstring = ConfigMgr::GetStringDefault("LoginDatabaseInfo", ""); if (dbstring.empty()) { diff --git a/src/server/shared/Database/DatabaseWorker.cpp b/src/server/shared/Database/DatabaseWorker.cpp index 8dc9ab4669d..662c879ad5e 100644 --- a/src/server/shared/Database/DatabaseWorker.cpp +++ b/src/server/shared/Database/DatabaseWorker.cpp @@ -34,11 +34,6 @@ int DatabaseWorker::svc() if (!m_queue) return -1; - //! Since this is called from the worker thread itself, we can ensure - //! that thread-specific variables remain in this thread. - if (!m_conn->Open()) - return -1; - SQLOperation *request = NULL; while (1) { @@ -52,7 +47,5 @@ int DatabaseWorker::svc() delete request; } - //! Clean up thread-specific variables - m_conn->Close(); return 0; } diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h index cd855852867..aef952fab55 100755 --- a/src/server/shared/Database/DatabaseWorkerPool.h +++ b/src/server/shared/Database/DatabaseWorkerPool.h @@ -77,6 +77,7 @@ class DatabaseWorkerPool for (uint8 i = 0; i < async_threads; ++i) { T* t = new T(m_queue, m_connectionInfo); + res &= t->Open(); m_connections[IDX_ASYNC][i] = t; ++m_connectionCount[IDX_ASYNC]; } @@ -110,6 +111,7 @@ class DatabaseWorkerPool DatabaseWorker* worker = t->m_worker; worker->wait(); delete worker; + t->Close(); } sLog->outSQLDriver("Asynchronous connections on databasepool '%s' terminated. Proceeding with synchronous connections.", m_connectionInfo.database.c_str()); @@ -124,6 +126,7 @@ class DatabaseWorkerPool } delete m_queue; + sLog->outSQLDriver("All connections on databasepool %s closed.", m_connectionInfo.database.c_str()); } diff --git a/src/server/shared/Database/MySQLConnection.cpp b/src/server/shared/Database/MySQLConnection.cpp index 273d2842505..f686db4c199 100755 --- a/src/server/shared/Database/MySQLConnection.cpp +++ b/src/server/shared/Database/MySQLConnection.cpp @@ -68,13 +68,9 @@ MySQLConnection::~MySQLConnection() } mysql_close(m_Mysql); - MySQL::Thread_End(); Unlock(); /// Unlock while we die, how ironic } -//! Can be called synchronously in DatabaseWorkerPool, in which thread-specific variables initialized in the main thread -//! are deallocated. -//! Can also be called by worker threads, in which their respective thread-specific variables are deallocated. void MySQLConnection::Close() { /// Only close us if we're not operating diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp index 258481350d2..f1be4a6889b 100755 --- a/src/server/worldserver/Master.cpp +++ b/src/server/worldserver/Master.cpp @@ -362,6 +362,8 @@ int Master::Run() /// Initialize connection to the databases bool Master::_StartDB() { + MySQL::Library_Init(); + sLog->SetLogDB(false); std::string dbstring; uint8 async_threads, synch_threads; |