diff options
author | Tor Brede Vekterli <vekterli@oath.com> | 2019-01-15 09:48:44 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-15 09:48:44 +0100 |
commit | 959655d2bd9f743b34c6e5caac21e44de48187e3 (patch) | |
tree | 4aba819ffb380484fedf12770fb5b7e8bddc5a04 /config | |
parent | 86b4be8b2439880c7e40c157896e1b42caac4b86 (diff) | |
parent | 7d1dda33a7b4e1e1727947c0104ed86036a5bef4 (diff) |
Merge pull request #8109 from vespa-engine/vekterli/fix-tsan-detected-data-races
Fix some ThreadSanitizer reported data races
Diffstat (limited to 'config')
-rw-r--r-- | config/src/vespa/config/subscription/configsubscriptionset.cpp | 4 | ||||
-rw-r--r-- | config/src/vespa/config/subscription/configsubscriptionset.h | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/config/src/vespa/config/subscription/configsubscriptionset.cpp b/config/src/vespa/config/subscription/configsubscriptionset.cpp index f120272edcf..9b3ef32a128 100644 --- a/config/src/vespa/config/subscription/configsubscriptionset.cpp +++ b/config/src/vespa/config/subscription/configsubscriptionset.cpp @@ -42,7 +42,7 @@ ConfigSubscriptionSet::acquireSnapshot(uint64_t timeoutInMillis, bool ignoreChan bool inSync = false; LOG(debug, "Going into nextConfig loop, time left is %d", timeLeft); - while ((_state != CLOSED) && (timeLeft >= 0) && !inSync) { + while (!isClosed() && (timeLeft >= 0) && !inSync) { size_t numChanged = 0; size_t numGenerationChanged = 0; bool generationsInSync = true; @@ -117,7 +117,7 @@ ConfigSubscriptionSet::close() bool ConfigSubscriptionSet::isClosed() const { - return (_state == CLOSED); + return (_state.load(std::memory_order_relaxed) == CLOSED); } ConfigSubscription::SP diff --git a/config/src/vespa/config/subscription/configsubscriptionset.h b/config/src/vespa/config/subscription/configsubscriptionset.h index cebd3007b19..ce1f45b0eb8 100644 --- a/config/src/vespa/config/subscription/configsubscriptionset.h +++ b/config/src/vespa/config/subscription/configsubscriptionset.h @@ -9,6 +9,8 @@ #include "configsubscription.h" #include "configprovider.h" +#include <atomic> + namespace config { /** @@ -60,7 +62,7 @@ private: int64_t _currentGeneration; // Holds the current config generation. SubscriptionList _subscriptionList; // List of current subscriptions. - SubscriberState _state; // Current state of this subscriber. + std::atomic<SubscriberState> _state; // Current state of this subscriber. }; } // namespace config |