]> granicus.if.org Git - icinga2/commitdiff
Merge COMMIT and BEGIN into the previous MySQL query
authorGunnar Beutner <gunnar@beutner.name>
Sat, 14 Mar 2015 06:58:55 +0000 (07:58 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Sat, 14 Mar 2015 06:58:55 +0000 (07:58 +0100)
refs #8738

lib/db_ido_mysql/idomysqlconnection.cpp

index a75bef97df5c7bee7cee14be426c9faffd32e4a0..af32b3db261ae49df27ab621acc5cc7f008e0665 100644 (file)
@@ -132,8 +132,8 @@ void IdoMysqlConnection::TxTimerHandler(void)
 
 void IdoMysqlConnection::NewTransaction(void)
 {
-       m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::FinishAsyncQueries, this, true));
        m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalNewTransaction, this));
+       m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::FinishAsyncQueries, this, true));
 }
 
 void IdoMysqlConnection::InternalNewTransaction(void)
@@ -143,8 +143,8 @@ void IdoMysqlConnection::InternalNewTransaction(void)
        if (!GetConnected())
                return;
 
-       Query("COMMIT");
-       Query("BEGIN");
+       AsyncQuery("COMMIT");
+       AsyncQuery("BEGIN");
 }
 
 void IdoMysqlConnection::ReconnectTimerHandler(void)
@@ -382,7 +382,11 @@ void IdoMysqlConnection::AsyncQuery(const String& query, const boost::function<v
        aq.Query = query;
        aq.Callback = callback;
        m_AsyncQueries.push_back(aq);
-       m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::FinishAsyncQueries, this, false));
+
+       if (m_AsyncQueries.size() > 500)
+               FinishAsyncQueries(true);
+       else
+               m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::FinishAsyncQueries, this, false));
 }
 
 void IdoMysqlConnection::FinishAsyncQueries(bool force)