From 00eba25ad76710090ba150fbedfb40b6180fb15a Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Thu, 16 Mar 2017 14:35:29 +0100 Subject: [PATCH] Add ASSERTs for the Redis queries refs #4991 --- lib/redis/rediswriter-config.cpp | 6 ++++++ lib/redis/rediswriter.cpp | 11 +++++++++++ lib/redis/rediswriter.hpp | 2 ++ 3 files changed, 19 insertions(+) diff --git a/lib/redis/rediswriter-config.cpp b/lib/redis/rediswriter-config.cpp index e0593dab2..964abffc2 100644 --- a/lib/redis/rediswriter-config.cpp +++ b/lib/redis/rediswriter-config.cpp @@ -55,6 +55,8 @@ void RedisWriter::ConfigStaticInitialize(void) //TODO: OnActiveChanged handling. void RedisWriter::UpdateAllConfigObjects(void) { + AssertOnWorkQueue(); + //TODO: Just use config types for (const Type::Ptr& type : Type::GetAllTypes()) { if (!ConfigObject::TypeInstance->IsAssignableFrom(type)) @@ -116,6 +118,8 @@ void RedisWriter::UpdateAllConfigObjects(void) void RedisWriter::SendConfigUpdate(const ConfigObject::Ptr& object, const String& typeName) { + AssertOnWorkQueue(); + /* Serialize config object attributes */ Dictionary::Ptr objectAttrs = SerializeObjectAttrs(object, FAConfig); @@ -147,6 +151,8 @@ void RedisWriter::SendConfigUpdate(const ConfigObject::Ptr& object, const String void RedisWriter::SendStatusUpdate(const ConfigObject::Ptr& object, const String& typeName) { + AssertOnWorkQueue(); + /* Serialize config object attributes */ Dictionary::Ptr objectAttrs = SerializeObjectAttrs(object, FAState); diff --git a/lib/redis/rediswriter.cpp b/lib/redis/rediswriter.cpp index 6fba06c29..8314d724c 100644 --- a/lib/redis/rediswriter.cpp +++ b/lib/redis/rediswriter.cpp @@ -62,6 +62,8 @@ void RedisWriter::ReconnectTimerHandler(void) void RedisWriter::TryToReconnect(void) { + AssertOnWorkQueue(); + if (m_Context) return; @@ -121,6 +123,8 @@ void RedisWriter::UpdateSubscriptionsTimerHandler(void) void RedisWriter::UpdateSubscriptions(void) { + AssertOnWorkQueue(); + if (!m_Context) return; @@ -252,6 +256,8 @@ void RedisWriter::HandleEvents(void) void RedisWriter::HandleEvent(const Dictionary::Ptr& event) { + AssertOnWorkQueue(); + if (!m_Context) return; @@ -295,3 +301,8 @@ void RedisWriter::Stop(bool runtimeRemoved) ObjectImpl::Stop(runtimeRemoved); } + +void RedisWriter::AssertOnWorkQueue(void) +{ + ASSERT(m_WorkQueue.IsWorkerThread()); +} diff --git a/lib/redis/rediswriter.hpp b/lib/redis/rediswriter.hpp index ad24c4184..1269f29dd 100644 --- a/lib/redis/rediswriter.hpp +++ b/lib/redis/rediswriter.hpp @@ -69,6 +69,8 @@ private: static void VarsChangedHandler(const ConfigObject::Ptr& object); static void VersionChangedHandler(const ConfigObject::Ptr& object); + void AssertOnWorkQueue(void); + Timer::Ptr m_ReconnectTimer; Timer::Ptr m_SubscriptionTimer; WorkQueue m_WorkQueue;