summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-03-03 17:16:05 +0100
committerGitHub <noreply@github.com>2022-03-03 17:16:05 +0100
commit78c4ecfad3a60475fd10e5e2d0e6196b31ea66bb (patch)
treec0542602a2726ca61e601ed4dc98d6a2a21bd932 /config
parent5246e11bc7555518467a247b5b56623dfe267083 (diff)
parent1c4400d115874bac4e62734ae871040d1b173501 (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.cpp8
-rw-r--r--config/src/vespa/config/retriever/configretriever.h2
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