diff --git a/src/shared/Database/SqlDelayThread.cpp b/src/shared/Database/SqlDelayThread.cpp index b15b405db..59e75ff4a 100644 --- a/src/shared/Database/SqlDelayThread.cpp +++ b/src/shared/Database/SqlDelayThread.cpp @@ -26,10 +26,8 @@ SqlDelayThread::SqlDelayThread(Database* db, SqlConnection* conn) : m_dbEngine(d SqlDelayThread::~SqlDelayThread() { - //empty SQL queue before exiting - SqlOperation* s = NULL; - while (m_sqlQueue.next(s)) - delete s; + //process all requests which might have been queued while thread was stopping + ProcessRequests(); } void SqlDelayThread::run() @@ -49,12 +47,7 @@ void SqlDelayThread::run() // empty the queue before exiting ACE_Based::Thread::Sleep(loopSleepms); - SqlOperation* s = NULL; - while (m_sqlQueue.next(s)) - { - s->Execute(m_dbConnection); - delete s; - } + ProcessRequests(); if((loopCounter++) >= pingEveryLoop) { @@ -72,3 +65,13 @@ void SqlDelayThread::Stop() { m_running = false; } + +void SqlDelayThread::ProcessRequests() +{ + SqlOperation* s = NULL; + while (m_sqlQueue.next(s)) + { + s->Execute(m_dbConnection); + delete s; + } +} \ No newline at end of file diff --git a/src/shared/Database/SqlDelayThread.h b/src/shared/Database/SqlDelayThread.h index 167f5763c..1970a77f8 100644 --- a/src/shared/Database/SqlDelayThread.h +++ b/src/shared/Database/SqlDelayThread.h @@ -38,6 +38,9 @@ class SqlDelayThread : public ACE_Based::Runnable SqlConnection * m_dbConnection; ///< Pointer to DB connection volatile bool m_running; + //process all enqueued requests + void ProcessRequests(); + public: SqlDelayThread(Database* db, SqlConnection* conn); ~SqlDelayThread(); @@ -48,4 +51,4 @@ class SqlDelayThread : public ACE_Based::Runnable virtual void Stop(); ///< Stop event virtual void run(); ///< Main Thread loop }; -#endif //__SQLDELAYTHREAD_H +#endif //__SQLDELAYTHREAD_H \ No newline at end of file diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 2ec648a16..89fafab64 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11052" + #define REVISION_NR "11053" #endif // __REVISION_NR_H__