aboutsummaryrefslogtreecommitdiff
path: root/src/server/database
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2020-07-30 19:42:27 +0000
committerShauren <shauren.trinity@gmail.com>2022-01-24 14:58:08 +0100
commit736b9ac112fd6a9b2ccd889e0925eda9d18a4806 (patch)
tree63f1fd0ddfdba812cd127172d0e05b64b606bab9 /src/server/database
parent6d9a0840362447c86e748a0d7fda746d480dab4b (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.cpp13
-rw-r--r--src/server/database/Database/DatabaseWorkerPool.h10
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