summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Noma <gregory.noma@gmail.com>2021-08-05 16:08:20 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-08-13 00:08:57 +0000
commitb6eb3fc070baa306cdbf854723e95f76bd9eb139 (patch)
tree8f4b03723a633bfeb65768c53a7c95df4450341f
parent8e2f3869aef5565b4448a85a194f2c912bba56c0 (diff)
downloadmongo-b6eb3fc070baa306cdbf854723e95f76bd9eb139.tar.gz
SERVER-59091 Avoid fetching namespace from durable catalog for every key inserted in index build
(cherry picked from commit 493eaec7f38729b17792deb4c5c2c6e3eb4a8d2f)
-rw-r--r--src/mongo/db/index/index_access_method.cpp23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/mongo/db/index/index_access_method.cpp b/src/mongo/db/index/index_access_method.cpp
index b7ef0e72f8a..9d679e1459e 100644
--- a/src/mongo/db/index/index_access_method.cpp
+++ b/src/mongo/db/index/index_access_method.cpp
@@ -685,6 +685,8 @@ Status AbstractIndexAccessMethod::commitBulk(OperationContext* opCtx,
const RecordIdHandlerFn& onDuplicateRecord) {
Timer timer;
+ auto ns = _indexCatalogEntry->getNSSFromCatalog(opCtx);
+
std::unique_ptr<BulkBuilder::Sorter::Iterator> it(bulk->done());
static constexpr char message[] = "Index Build: inserting keys from external sorter into index";
@@ -750,17 +752,16 @@ Status AbstractIndexAccessMethod::commitBulk(OperationContext* opCtx,
continue;
}
- Status status = writeConflictRetry(
- opCtx, "addingKey", _indexCatalogEntry->getNSSFromCatalog(opCtx).ns(), [&] {
- WriteUnitOfWork wunit(opCtx);
- Status status = builder->addKey(data.first);
- if (!status.isOK()) {
- return status;
- }
+ Status status = writeConflictRetry(opCtx, "addingKey", ns.ns(), [&] {
+ WriteUnitOfWork wunit(opCtx);
+ Status status = builder->addKey(data.first);
+ if (!status.isOK()) {
+ return status;
+ }
- wunit.commit();
- return Status::OK();
- });
+ wunit.commit();
+ return Status::OK();
+ });
if (!status.isOK()) {
// Duplicates are checked before inserting.
@@ -786,7 +787,7 @@ Status AbstractIndexAccessMethod::commitBulk(OperationContext* opCtx,
"Index build: inserted {bulk_getKeysInserted} keys from external sorter into index in "
"{timer_seconds} seconds",
"Index build: inserted keys from external sorter into index",
- "namespace"_attr = _indexCatalogEntry->getNSSFromCatalog(opCtx),
+ logAttrs(ns),
"index"_attr = _descriptor->indexName(),
"keysInserted"_attr = bulk->getKeysInserted(),
"duration"_attr = Milliseconds(Seconds(timer.seconds())));