summaryrefslogtreecommitdiff
path: root/src/mongo/s/config_server_catalog_cache_loader.cpp
diff options
context:
space:
mode:
authorEsha Maharishi <esha.maharishi@mongodb.com>2018-04-13 08:52:44 -0400
committerEsha Maharishi <esha.maharishi@mongodb.com>2018-04-13 15:08:34 -0400
commit3a8494c12ecaf85f4456ba7da54b5623e60dacbf (patch)
treee340429a2f457e02d76ebe6cf624fd08bb7e92ee /src/mongo/s/config_server_catalog_cache_loader.cpp
parent8cca1f4c2b19c5f430ed3cb330fd2ef7a925b12f (diff)
downloadmongo-3a8494c12ecaf85f4456ba7da54b5623e60dacbf.tar.gz
SERVER-34163 Make refreshing a database entry in the CatalogCache asynchronous
Diffstat (limited to 'src/mongo/s/config_server_catalog_cache_loader.cpp')
-rw-r--r--src/mongo/s/config_server_catalog_cache_loader.cpp34
1 files changed, 16 insertions, 18 deletions
diff --git a/src/mongo/s/config_server_catalog_cache_loader.cpp b/src/mongo/s/config_server_catalog_cache_loader.cpp
index f9baadd0d02..e6c7ecc138c 100644
--- a/src/mongo/s/config_server_catalog_cache_loader.cpp
+++ b/src/mongo/s/config_server_catalog_cache_loader.cpp
@@ -42,7 +42,6 @@
namespace mongo {
using CollectionAndChangedChunks = CatalogCacheLoader::CollectionAndChangedChunks;
-MONGO_FP_DECLARE(callShardServerCallbackFn);
namespace {
@@ -198,25 +197,24 @@ std::shared_ptr<Notification<void>> ConfigServerCatalogCacheLoader::getChunksSin
void ConfigServerCatalogCacheLoader::getDatabase(
StringData dbName,
stdx::function<void(OperationContext*, StatusWith<DatabaseType>)> callbackFn) {
+ uassertStatusOK(_threadPool.schedule([ name = dbName.toString(), callbackFn ]() noexcept {
+ auto opCtx = Client::getCurrent()->makeOperationContext();
- if (MONGO_FAIL_POINT(callShardServerCallbackFn)) {
- uassertStatusOK(_threadPool.schedule([ name = dbName.toString(), callbackFn ]() noexcept {
- auto opCtx = Client::getCurrent()->makeOperationContext();
-
- auto swDbt = [&]() -> StatusWith<DatabaseType> {
- try {
-
- const auto dbVersion = databaseVersion::makeNew();
- DatabaseType dbt(std::move(name), ShardId("PrimaryShard"), false, dbVersion);
- return dbt;
- } catch (const DBException& ex) {
- return ex.toStatus();
- }
- }();
+ auto swDbt = [&]() -> StatusWith<DatabaseType> {
+ try {
+ return uassertStatusOK(
+ Grid::get(opCtx.get())
+ ->catalogClient()
+ ->getDatabase(
+ opCtx.get(), name, repl::ReadConcernLevel::kMajorityReadConcern))
+ .value;
+ } catch (const DBException& ex) {
+ return ex.toStatus();
+ }
+ }();
- callbackFn(opCtx.get(), swDbt);
- }));
- }
+ callbackFn(opCtx.get(), std::move(swDbt));
+ }));
}
} // namespace mongo