]> granicus.if.org Git - icinga2/commitdiff
Add more debug build logging to IDO MySQL
authorMichael Friedrich <michael.friedrich@icinga.com>
Wed, 22 Feb 2017 15:32:17 +0000 (16:32 +0100)
committerGunnar Beutner <gunnar.beutner@icinga.com>
Thu, 2 Mar 2017 09:16:18 +0000 (10:16 +0100)
refs #4603

lib/db_ido_mysql/idomysqlconnection.cpp

index 34969c3a0cdb0f92710bf627d48258015e0c7f20..c3e9cdce3a88743a9edc048f817359314cb96557 100644 (file)
@@ -101,6 +101,11 @@ void IdoMysqlConnection::Pause(void)
 
        DbConnection::Pause();
 
+#ifdef I2_DEBUG /* I2_DEBUG */
+       Log(LogDebug, "IdoMysqlConnection")
+           << "Rescheduling disconnect task.";
+#endif /* I2_DEBUG */
+
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::Disconnect, this), PriorityHigh);
        m_QueryQueue.Join();
 }
@@ -144,6 +149,11 @@ void IdoMysqlConnection::TxTimerHandler(void)
 
 void IdoMysqlConnection::NewTransaction(void)
 {
+#ifdef I2_DEBUG /* I2_DEBUG */
+       Log(LogDebug, "IdoMysqlConnection")
+           << "Scheduling new transaction and finishing async queries.";
+#endif /* I2_DEBUG */
+
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalNewTransaction, this), PriorityHigh);
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::FinishAsyncQueries, this), PriorityHigh);
 }
@@ -161,6 +171,11 @@ void IdoMysqlConnection::InternalNewTransaction(void)
 
 void IdoMysqlConnection::ReconnectTimerHandler(void)
 {
+#ifdef I2_DEBUG /* I2_DEBUG */
+       Log(LogDebug, "IdoMysqlConnection")
+           << "Scheduling reconnect task.";
+#endif /* I2_DEBUG */
+
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::Reconnect, this), PriorityLow);
 }
 
@@ -414,6 +429,11 @@ void IdoMysqlConnection::Reconnect(void)
 
        UpdateAllObjects();
 
+#ifdef I2_DEBUG /* I2_DEBUG */
+       Log(LogDebug, "IdoMysqlConnection")
+           << "Scheduling session table clear and finish connect task.";
+#endif /* I2_DEBUG */
+
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::ClearTablesBySession, this), PriorityLow);
 
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::FinishConnect, this, startTime), PriorityLow);
@@ -677,6 +697,11 @@ void IdoMysqlConnection::DiscardRows(const IdoMysqlResult& result)
 
 void IdoMysqlConnection::ActivateObject(const DbObject::Ptr& dbobj)
 {
+#ifdef I2_DEBUG /* I2_DEBUG */
+       Log(LogDebug, "IdoMysqlConnection")
+           << "Scheduling object activation task for '" << dbobj->GetName1() << "!" << dbobj->GetName2() << "'.";
+#endif /* I2_DEBUG */
+
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalActivateObject, this, dbobj), PriorityLow);
 }
 
@@ -711,6 +736,11 @@ void IdoMysqlConnection::InternalActivateObject(const DbObject::Ptr& dbobj)
 
 void IdoMysqlConnection::DeactivateObject(const DbObject::Ptr& dbobj)
 {
+#ifdef I2_DEBUG /* I2_DEBUG */
+       Log(LogDebug, "IdoMysqlConnection")
+           << "Scheduling object deactivation task for '" << dbobj->GetName1() << "!" << dbobj->GetName2() << "'.";
+#endif /* I2_DEBUG */
+
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalDeactivateObject, this, dbobj), PriorityLow);
 }
 
@@ -811,6 +841,11 @@ void IdoMysqlConnection::ExecuteQuery(const DbQuery& query)
 {
        ASSERT(query.Category != DbCatInvalid);
 
+#ifdef I2_DEBUG /* I2_DEBUG */
+       Log(LogDebug, "IdoMysqlConnection")
+           << "Scheduling execute query task, type " << query.Type << ", table '" << query.Table << "'.";
+#endif /* I2_DEBUG */
+
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalExecuteQuery, this, query, -1), query.Priority, true);
 }
 
@@ -819,6 +854,11 @@ void IdoMysqlConnection::ExecuteMultipleQueries(const std::vector<DbQuery>& quer
        if (queries.empty())
                return;
 
+#ifdef I2_DEBUG /* I2_DEBUG */
+       Log(LogDebug, "IdoMysqlConnection")
+           << "Scheduling multiple execute query task, type " << queries[0].Type << ", table '" << queries[0].Table << "'.";
+#endif /* I2_DEBUG */
+
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalExecuteMultipleQueries, this, queries), queries[0].Priority, true);
 }
 
@@ -865,6 +905,13 @@ void IdoMysqlConnection::InternalExecuteMultipleQueries(const std::vector<DbQuer
                ASSERT(query.Type == DbQueryNewTransaction || query.Category != DbCatInvalid);
 
                if (!CanExecuteQuery(query)) {
+
+#ifdef I2_DEBUG /* I2_DEBUG */
+                       Log(LogDebug, "IdoMysqlConnection")
+                           << "Scheduling multiple execute query task again: Cannot execute query now. Type '"
+                           << query.Type << "', table '" << query.Table << "', queue size: '" << GetPendingQueryCount() << "'.";
+#endif /* I2_DEBUG */
+
                        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalExecuteMultipleQueries, this, queries), query.Priority);
                        return;
                }
@@ -896,6 +943,13 @@ void IdoMysqlConnection::InternalExecuteQuery(const DbQuery& query, int typeOver
 
        /* check if there are missing object/insert ids and re-enqueue the query */
        if (!CanExecuteQuery(query)) {
+
+#ifdef I2_DEBUG /* I2_DEBUG */
+               Log(LogDebug, "IdoMysqlConnection")
+                   << "Scheduling execute query task again: Cannot execute query now. Type '"
+                   << typeOverride << "', table '" << query.Table << "', queue size: '" << GetPendingQueryCount() << "'.";
+#endif /* I2_DEBUG */
+
                m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalExecuteQuery, this, query, typeOverride), query.Priority);
                return;
        }
@@ -912,6 +966,13 @@ void IdoMysqlConnection::InternalExecuteQuery(const DbQuery& query, int typeOver
 
                for (const Dictionary::Pair& kv : query.WhereCriteria) {
                        if (!FieldToEscapedString(kv.first, kv.second, &value)) {
+
+#ifdef I2_DEBUG /* I2_DEBUG */
+                               Log(LogDebug, "IdoMysqlConnection")
+                                   << "Scheduling execute query task again: Cannot execute query now. Type '"
+                                   << typeOverride << "', table '" << query.Table << "', queue size: '" << GetPendingQueryCount() << "'.";
+#endif /* I2_DEBUG */
+
                                m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalExecuteQuery, this, query, -1), query.Priority);
                                return;
                        }
@@ -984,6 +1045,13 @@ void IdoMysqlConnection::InternalExecuteQuery(const DbQuery& query, int typeOver
                                continue;
 
                        if (!FieldToEscapedString(kv.first, kv.second, &value)) {
+
+#ifdef I2_DEBUG /* I2_DEBUG */
+                               Log(LogDebug, "IdoMysqlConnection")
+                                   << "Scheduling execute query task again: Cannot extract required INSERT/UPDATE fields, key '"
+                                   << kv.first << "', val '" << kv.second << "', type " << typeOverride << ", table '" << query.Table << "'.";
+#endif /* I2_DEBUG */
+
                                m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalExecuteQuery, this, query, -1), query.Priority);
                                return;
                        }
@@ -1039,6 +1107,12 @@ void IdoMysqlConnection::FinishExecuteQuery(const DbQuery& query, int type, bool
 
 void IdoMysqlConnection::CleanUpExecuteQuery(const String& table, const String& time_column, double max_age)
 {
+#ifdef I2_DEBUG /* I2_DEBUG */
+               Log(LogDebug, "IdoMysqlConnection")
+                   << "Rescheduling cleanup query for table '" << table << "' and column '"
+                   << time_column << "'. max_age is set to '" << max_age << "'.";
+#endif /* I2_DEBUG */
+
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalCleanUpExecuteQuery, this, table, time_column, max_age), PriorityLow, true);
 }