diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-03-03 17:16:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-03 17:16:05 +0100 |
commit | 78c4ecfad3a60475fd10e5e2d0e6196b31ea66bb (patch) | |
tree | c0542602a2726ca61e601ed4dc98d6a2a21bd932 /config | |
parent | 5246e11bc7555518467a247b5b56623dfe267083 (diff) | |
parent | 1c4400d115874bac4e62734ae871040d1b173501 (diff) |
Merge pull request #21526 from vespa-engine/vekterli/make-config-retriever-closed-polling-atomic
Make ConfigRetriever closed-state polling atomic
Diffstat (limited to 'config')
-rw-r--r-- | config/src/vespa/config/retriever/configretriever.cpp | 8 | ||||
-rw-r--r-- | config/src/vespa/config/retriever/configretriever.h | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/config/src/vespa/config/retriever/configretriever.cpp b/config/src/vespa/config/retriever/configretriever.cpp index b2de6337434..6c48c62deff 100644 --- a/config/src/vespa/config/retriever/configretriever.cpp +++ b/config/src/vespa/config/retriever/configretriever.cpp @@ -42,7 +42,7 @@ ConfigRetriever::getBootstrapConfigs(vespalib::duration timeout) ConfigSnapshot ConfigRetriever::getConfigs(const ConfigKeySet & keySet, vespalib::duration timeout) { - if (_closed) + if (isClosed()) return ConfigSnapshot(); if (_bootstrapRequired) { throw ConfigRuntimeException("Cannot change keySet until bootstrap getBootstrapConfigs() has been called"); @@ -52,7 +52,7 @@ ConfigRetriever::getConfigs(const ConfigKeySet & keySet, vespalib::duration time _lastKeySet = keySet; { std::lock_guard guard(_lock); - if (_closed) + if (isClosed()) return ConfigSnapshot(); _configSubscriber = std::make_unique<GenericConfigSubscriber>(_context); } @@ -83,7 +83,7 @@ void ConfigRetriever::close() { std::lock_guard guard(_lock); - _closed = true; + _closed.store(true, std::memory_order_relaxed); _bootstrapSubscriber.close(); if (_configSubscriber) _configSubscriber->close(); @@ -92,7 +92,7 @@ ConfigRetriever::close() bool ConfigRetriever::isClosed() const { - return (_closed); + return _closed.load(std::memory_order_relaxed); } } diff --git a/config/src/vespa/config/retriever/configretriever.h b/config/src/vespa/config/retriever/configretriever.h index 8fea6af0863..bf86a2e69ee 100644 --- a/config/src/vespa/config/retriever/configretriever.h +++ b/config/src/vespa/config/retriever/configretriever.h @@ -101,7 +101,7 @@ private: int64_t _generation; vespalib::duration _subscribeTimeout; bool _bootstrapRequired; - bool _closed; + std::atomic<bool> _closed; }; } // namespace config |