summaryrefslogtreecommitdiff
path: root/src/mongo/db/read_write_concern_defaults.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/read_write_concern_defaults.cpp')
-rw-r--r--src/mongo/db/read_write_concern_defaults.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/mongo/db/read_write_concern_defaults.cpp b/src/mongo/db/read_write_concern_defaults.cpp
index 020d094cd72..a09653a1a31 100644
--- a/src/mongo/db/read_write_concern_defaults.cpp
+++ b/src/mongo/db/read_write_concern_defaults.cpp
@@ -208,13 +208,28 @@ void ReadWriteConcernDefaults::create(ServiceContext* service, FetchDefaultsFn f
}
ReadWriteConcernDefaults::ReadWriteConcernDefaults(FetchDefaultsFn fetchDefaultsFn)
- : _defaults([fetchDefaultsFn = std::move(fetchDefaultsFn)](
+ : _threadPool([] {
+ ThreadPool::Options options;
+ options.poolName = "ReadWriteConcernDefaults";
+ options.minThreads = 0;
+ options.maxThreads = 1;
+
+ // Ensure all threads have a client
+ options.onCreateThread = [](const std::string& threadName) {
+ Client::initThread(threadName.c_str());
+ };
+
+ return options;
+ }()),
+ _defaults(_threadPool,
+ [fetchDefaultsFn = std::move(fetchDefaultsFn)](
OperationContext* opCtx, const Type&) { return fetchDefaultsFn(opCtx); }) {}
ReadWriteConcernDefaults::~ReadWriteConcernDefaults() = default;
-ReadWriteConcernDefaults::Cache::Cache(LookupFn lookupFn)
- : ReadThroughCache(1, _mutex), _lookupFn(lookupFn) {}
+ReadWriteConcernDefaults::Cache::Cache(ThreadPoolInterface& threadPool, LookupFn lookupFn)
+ : ReadThroughCache(_mutex, getGlobalServiceContext(), threadPool, 1 /* cacheSize */),
+ _lookupFn(std::move(lookupFn)) {}
boost::optional<RWConcernDefault> ReadWriteConcernDefaults::Cache::lookup(
OperationContext* opCtx, const ReadWriteConcernDefaults::Type& key) {