aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/shared/Database/DatabaseWorker.h5
-rwxr-xr-xsrc/server/shared/Database/DatabaseWorkerPool.h23
2 files changed, 17 insertions, 11 deletions
diff --git a/src/server/shared/Database/DatabaseWorker.h b/src/server/shared/Database/DatabaseWorker.h
index 2e0fe58e814..db8aff1892d 100755
--- a/src/server/shared/Database/DatabaseWorker.h
+++ b/src/server/shared/Database/DatabaseWorker.h
@@ -48,13 +48,14 @@ class DatabaseWorker : public ACE_Task_Base
return -1;
SQLOperation *request = NULL;
+ MySQLConnection* con = NULL;
while (1)
{
request = (SQLOperation*)(m_queue->dequeue());
if (!request)
break;
- MySQLConnection* con = m_pool->GetFreeConnection();
+ con = m_pool->GetFreeConnection();
request->SetConnection(con);
request->call();
con->Unlock();
@@ -62,7 +63,6 @@ class DatabaseWorker : public ACE_Task_Base
delete request;
}
- m_conn->Close();
return 0;
}
@@ -86,7 +86,6 @@ class DatabaseWorker : public ACE_Task_Base
private:
DatabaseWorker() : ACE_Task_Base() {}
ACE_Activation_Queue* m_queue;
- MySQLConnection* m_conn;
DatabaseWorkerPool<T>* m_pool; // Databasepool we operate on
};
diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h
index 40a31b59e83..96ec143f8c3 100755
--- a/src/server/shared/Database/DatabaseWorkerPool.h
+++ b/src/server/shared/Database/DatabaseWorkerPool.h
@@ -98,7 +98,11 @@ class DatabaseWorkerPool
m_queue->queue()->deactivate();
for (uint8 i = 0; i < m_delaythreads.size(); ++i)
- m_delaythreads[i]->wait();
+ {
+ DatabaseWorker<T>* worker = m_delaythreads[i];
+ worker->wait();
+ delete worker;
+ }
/// Shut down the connections
for (uint8 i = 0; i < m_connectionCount; ++i)
@@ -241,16 +245,19 @@ class DatabaseWorkerPool
{
if (sLog.GetSQLDriverQueryLogging())
{
- if (transaction->GetSize() == 0)
- {
- sLog.outSQLDriver("Transaction contains 0 queries. Not executing.");
- return;
- }
- if (transaction->GetSize() == 1)
+ switch (transaction->GetSize())
{
- sLog.outSQLDriver("Warning: Transaction only holds 1 query, consider removing Transaction context in code.");
+ case 0:
+ sLog.outSQLDriver("Transaction contains 0 queries. Not executing.");
+ return;
+ case 1:
+ sLog.outSQLDriver("Warning: Transaction only holds 1 query, consider removing Transaction context in code.");
+ break;
+ default:
+ break;
}
}
+
Enqueue(new TransactionTask(transaction));
}