diff options
Diffstat (limited to 'src/mongo/db/repl')
-rw-r--r-- | src/mongo/db/repl/storage_interface.h | 1 | ||||
-rw-r--r-- | src/mongo/db/repl/storage_interface_impl.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/repl/storage_interface_impl.h | 1 | ||||
-rw-r--r-- | src/mongo/db/repl/storage_interface_impl_test.cpp | 10 | ||||
-rw-r--r-- | src/mongo/db/repl/storage_interface_mock.h | 1 | ||||
-rw-r--r-- | src/mongo/db/repl/sync_tail.cpp | 8 |
6 files changed, 16 insertions, 8 deletions
diff --git a/src/mongo/db/repl/storage_interface.h b/src/mongo/db/repl/storage_interface.h index ca6354a9a7a..426c6fbcb03 100644 --- a/src/mongo/db/repl/storage_interface.h +++ b/src/mongo/db/repl/storage_interface.h @@ -186,6 +186,7 @@ public: virtual Status setIndexIsMultikey(OperationContext* opCtx, const NamespaceString& nss, const std::string& indexName, + const std::vector<BSONObj>& multikeyMetadataKeys, const MultikeyPaths& paths, Timestamp ts) = 0; /** diff --git a/src/mongo/db/repl/storage_interface_impl.cpp b/src/mongo/db/repl/storage_interface_impl.cpp index 693f2199c70..e0527d461bb 100644 --- a/src/mongo/db/repl/storage_interface_impl.cpp +++ b/src/mongo/db/repl/storage_interface_impl.cpp @@ -522,6 +522,7 @@ Status StorageInterfaceImpl::renameCollection(OperationContext* opCtx, Status StorageInterfaceImpl::setIndexIsMultikey(OperationContext* opCtx, const NamespaceString& nss, const std::string& indexName, + const std::vector<BSONObj>& multikeyMetadataKeys, const MultikeyPaths& paths, Timestamp ts) { if (ts.isNull()) { @@ -552,7 +553,7 @@ Status StorageInterfaceImpl::setIndexIsMultikey(OperationContext* opCtx, str::stream() << "Could not find index " << indexName << " in " << nss.ns() << " to set to multikey."); } - collection->getIndexCatalog()->setMultikeyPaths(opCtx, idx, paths); + collection->getIndexCatalog()->setMultikeyPaths(opCtx, idx, multikeyMetadataKeys, paths); wunit.commit(); return Status::OK(); }); diff --git a/src/mongo/db/repl/storage_interface_impl.h b/src/mongo/db/repl/storage_interface_impl.h index 61eee68dea1..21827a8b0e8 100644 --- a/src/mongo/db/repl/storage_interface_impl.h +++ b/src/mongo/db/repl/storage_interface_impl.h @@ -96,6 +96,7 @@ public: Status setIndexIsMultikey(OperationContext* opCtx, const NamespaceString& nss, const std::string& indexName, + const std::vector<BSONObj>& multikeyMetadataKeys, const MultikeyPaths& paths, Timestamp ts) override; diff --git a/src/mongo/db/repl/storage_interface_impl_test.cpp b/src/mongo/db/repl/storage_interface_impl_test.cpp index 8ade17d6efa..f4ef3dc1bd7 100644 --- a/src/mongo/db/repl/storage_interface_impl_test.cpp +++ b/src/mongo/db/repl/storage_interface_impl_test.cpp @@ -2607,7 +2607,7 @@ TEST_F(StorageInterfaceImplTest, SetIndexIsMultikeyReturnsNamespaceNotFoundForMi StorageInterfaceImpl storage; auto nss = makeNamespace(_agent); ASSERT_EQUALS(ErrorCodes::NamespaceNotFound, - storage.setIndexIsMultikey(opCtx, nss, "foo", {}, Timestamp(3, 3))); + storage.setIndexIsMultikey(opCtx, nss, "foo", {}, {}, Timestamp(3, 3))); } TEST_F(StorageInterfaceImplTest, SetIndexIsMultikeyReturnsNamespaceNotFoundForMissingCollection) { @@ -2617,7 +2617,7 @@ TEST_F(StorageInterfaceImplTest, SetIndexIsMultikeyReturnsNamespaceNotFoundForMi NamespaceString wrongColl(nss.db(), "wrongColl"_sd); ASSERT_OK(storage.createCollection(opCtx, nss, CollectionOptions())); ASSERT_EQUALS(ErrorCodes::NamespaceNotFound, - storage.setIndexIsMultikey(opCtx, wrongColl, "foo", {}, Timestamp(3, 3))); + storage.setIndexIsMultikey(opCtx, wrongColl, "foo", {}, {}, Timestamp(3, 3))); } TEST_F(StorageInterfaceImplTest, SetIndexIsMultikeyReturnsIndexNotFoundForMissingIndex) { @@ -2626,7 +2626,7 @@ TEST_F(StorageInterfaceImplTest, SetIndexIsMultikeyReturnsIndexNotFoundForMissin auto nss = makeNamespace(_agent); ASSERT_OK(storage.createCollection(opCtx, nss, CollectionOptions())); ASSERT_EQUALS(ErrorCodes::IndexNotFound, - storage.setIndexIsMultikey(opCtx, nss, "foo", {}, Timestamp(3, 3))); + storage.setIndexIsMultikey(opCtx, nss, "foo", {}, {}, Timestamp(3, 3))); } TEST_F(StorageInterfaceImplTest, SetIndexIsMultikeyReturnsInvalidOptionsForNullTimestamp) { @@ -2635,7 +2635,7 @@ TEST_F(StorageInterfaceImplTest, SetIndexIsMultikeyReturnsInvalidOptionsForNullT auto nss = makeNamespace(_agent); ASSERT_OK(storage.createCollection(opCtx, nss, CollectionOptions())); ASSERT_EQUALS(ErrorCodes::InvalidOptions, - storage.setIndexIsMultikey(opCtx, nss, "foo", {}, Timestamp())); + storage.setIndexIsMultikey(opCtx, nss, "foo", {}, {}, Timestamp())); } TEST_F(StorageInterfaceImplTest, SetIndexIsMultikeySucceeds) { @@ -2650,7 +2650,7 @@ TEST_F(StorageInterfaceImplTest, SetIndexIsMultikeySucceeds) { ASSERT_EQUALS(_createIndexOnEmptyCollection(opCtx, nss, indexSpec), 2); MultikeyPaths paths = {{1}}; - ASSERT_OK(storage.setIndexIsMultikey(opCtx, nss, indexName, paths, Timestamp(3, 3))); + ASSERT_OK(storage.setIndexIsMultikey(opCtx, nss, indexName, {}, paths, Timestamp(3, 3))); AutoGetCollectionForReadCommand autoColl(opCtx, nss); ASSERT_TRUE(autoColl.getCollection()); auto indexCatalog = autoColl.getCollection()->getIndexCatalog(); diff --git a/src/mongo/db/repl/storage_interface_mock.h b/src/mongo/db/repl/storage_interface_mock.h index 68811f01bab..6b48bfcbb15 100644 --- a/src/mongo/db/repl/storage_interface_mock.h +++ b/src/mongo/db/repl/storage_interface_mock.h @@ -193,6 +193,7 @@ public: Status setIndexIsMultikey(OperationContext* opCtx, const NamespaceString& nss, const std::string& indexName, + const std::vector<BSONObj>& multikeyMetadataKeys, const MultikeyPaths& paths, Timestamp ts) override { diff --git a/src/mongo/db/repl/sync_tail.cpp b/src/mongo/db/repl/sync_tail.cpp index bdcccdfd384..1a72e087b1e 100644 --- a/src/mongo/db/repl/sync_tail.cpp +++ b/src/mongo/db/repl/sync_tail.cpp @@ -1438,8 +1438,12 @@ StatusWith<OpTime> SyncTail::multiApply(OperationContext* opCtx, MultiApplier::O // the first timestamp in the batch since we do not have enough information to find out // the timestamp of the first write that set the given multikey path. fassert(50686, - _storageInterface->setIndexIsMultikey( - opCtx, info.nss, info.indexName, info.multikeyPaths, firstTimeInBatch)); + _storageInterface->setIndexIsMultikey(opCtx, + info.nss, + info.indexName, + info.multikeyMetadataKeys, + info.multikeyPaths, + firstTimeInBatch)); } } |