diff options
author | Gregory Noma <gregory.noma@gmail.com> | 2021-08-05 16:08:20 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-08-13 00:08:57 +0000 |
commit | b6eb3fc070baa306cdbf854723e95f76bd9eb139 (patch) | |
tree | 8f4b03723a633bfeb65768c53a7c95df4450341f | |
parent | 8e2f3869aef5565b4448a85a194f2c912bba56c0 (diff) | |
download | mongo-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.cpp | 23 |
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()))); |