fix(Core/Database): Gracefully close database workers (#20936)
* Gracefully close database workers * Change init order. Such a silly compiler flag * Fix hang if db connection failed to open
This commit is contained in:
parent
c8734af4bc
commit
a23b13defe
5 changed files with 21 additions and 55 deletions
|
|
@ -112,7 +112,11 @@ uint32 DatabaseWorkerPool<T>::Open()
|
|||
template <class T>
|
||||
void DatabaseWorkerPool<T>::Close()
|
||||
{
|
||||
LOG_INFO("sql.driver", "Closing down DatabasePool '{}'.", GetDatabaseName());
|
||||
LOG_INFO("sql.driver", "Closing down DatabasePool '{}'. Waiting for {} queries to finish...", GetDatabaseName(), _queue->Size());
|
||||
|
||||
// Gracefully close async query queue, worker threads will block when the destructor
|
||||
// is called from the .clear() functions below until the queue is empty
|
||||
_queue->Shutdown();
|
||||
|
||||
//! Closes the actualy MySQL connection.
|
||||
_connections[IDX_ASYNC].clear();
|
||||
|
|
@ -432,6 +436,7 @@ uint32 DatabaseWorkerPool<T>::OpenConnections(InternalIndex type, uint8 numConne
|
|||
if (uint32 error = connection->Open())
|
||||
{
|
||||
// Failed to open a connection or invalid version, abort and cleanup
|
||||
_queue->Cancel();
|
||||
_connections[type].clear();
|
||||
return error;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue