diff options
Diffstat (limited to 'src/server/database')
| -rw-r--r-- | src/server/database/Database/DatabaseWorkerPool.cpp | 13 | ||||
| -rw-r--r-- | src/server/database/Database/DatabaseWorkerPool.h | 10 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/server/database/Database/DatabaseWorkerPool.cpp b/src/server/database/Database/DatabaseWorkerPool.cpp index 21f3ff423b3..53ca065136e 100644 --- a/src/server/database/Database/DatabaseWorkerPool.cpp +++ b/src/server/database/Database/DatabaseWorkerPool.cpp @@ -34,6 +34,10 @@ #include "Transaction.h" #include "MySQLWorkaround.h" #include <mysqld_error.h> +#ifdef TRINITY_DEBUG +#include <sstream> +#include <boost/stacktrace.hpp> +#endif #define MIN_MYSQL_SERVER_VERSION 50100u #define MIN_MYSQL_CLIENT_VERSION 50100u @@ -413,6 +417,15 @@ void DatabaseWorkerPool<T>::Enqueue(SQLOperation* op) template <class T> T* DatabaseWorkerPool<T>::GetFreeConnection() { +#ifdef TRINITY_DEBUG + if (_warnSyncQueries) + { + std::ostringstream ss; + ss << boost::stacktrace::stacktrace(); + TC_LOG_WARN("sql.performances", "Sync query at:\n%s", ss.str().c_str()); + } +#endif + uint8 i = 0; auto const num_cons = _connections[IDX_SYNCH].size(); T* connection = nullptr; diff --git a/src/server/database/Database/DatabaseWorkerPool.h b/src/server/database/Database/DatabaseWorkerPool.h index f72817c3a8f..13d52f99539 100644 --- a/src/server/database/Database/DatabaseWorkerPool.h +++ b/src/server/database/Database/DatabaseWorkerPool.h @@ -206,6 +206,13 @@ class DatabaseWorkerPool //! Keeps all our MySQL connections alive, prevent the server from disconnecting us. void KeepAlive(); + void WarnAboutSyncQueries([[maybe_unused]] bool warn) + { +#ifdef TRINITY_DEBUG + _warnSyncQueries = warn; +#endif + } + private: uint32 OpenConnections(InternalIndex type, uint8 numConnections); @@ -225,6 +232,9 @@ class DatabaseWorkerPool std::unique_ptr<MySQLConnectionInfo> _connectionInfo; std::vector<uint8> _preparedStatementSize; uint8 _async_threads, _synch_threads; +#ifdef TRINITY_DEBUG + static inline thread_local bool _warnSyncQueries = false; +#endif }; #endif |
