diff options
| author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2020-07-30 19:42:27 +0000 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-01-24 14:58:08 +0100 |
| commit | 736b9ac112fd6a9b2ccd889e0925eda9d18a4806 (patch) | |
| tree | 63f1fd0ddfdba812cd127172d0e05b64b606bab9 /src/server/database | |
| parent | 6d9a0840362447c86e748a0d7fda746d480dab4b (diff) | |
Log sync db queries in World::Update() loop (#25174)
* Core/Misc: Log sync queries on critical path
* Fix build
* Rename
* Fix warning
* Fix no-pch
* Change WarnAboutSyncQueries() to be header-only
(cherry picked from commit deceb11b5fc52c8036f249d628ccc69ca5d022b3)
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 |
