diff options
author | Matt Boros <matt.boros@mongodb.com> | 2022-01-13 15:54:06 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-01-18 16:06:42 +0000 |
commit | a495a8881f30e97775668e5e49b404cf0623fa54 (patch) | |
tree | 25cd558b9726a2d1ebe477f654f228e31c19a20f | |
parent | c7db7debed3584e36f8439ee195a489d58412383 (diff) | |
download | mongo-a495a8881f30e97775668e5e49b404cf0623fa54.tar.gz |
SERVER-62178 Clear filtering metadata on recipient shard primary for temporary resharding collection after creation
(cherry picked from commit e9d49578b3e11044e0e41bdcbb72f41cd17e571c)
-rw-r--r-- | src/mongo/db/s/resharding/resharding_recipient_service_external_state.cpp | 4 | ||||
-rw-r--r-- | src/mongo/db/s/resharding/resharding_recipient_service_external_state_test.cpp | 28 |
2 files changed, 17 insertions, 15 deletions
diff --git a/src/mongo/db/s/resharding/resharding_recipient_service_external_state.cpp b/src/mongo/db/s/resharding/resharding_recipient_service_external_state.cpp index 660c1e84667..133621fcc77 100644 --- a/src/mongo/db/s/resharding/resharding_recipient_service_external_state.cpp +++ b/src/mongo/db/s/resharding/resharding_recipient_service_external_state.cpp @@ -85,6 +85,10 @@ void ReshardingRecipientService::RecipientStateMachineExternalState:: std::move(indexes), std::move(idIndex), std::move(collOptions)}); + + AutoGetCollection autoColl(opCtx, metadata.getTempReshardingNss(), MODE_IX); + CollectionShardingRuntime::get(opCtx, metadata.getTempReshardingNss()) + ->clearFilteringMetadata(opCtx); } template <typename Callable> diff --git a/src/mongo/db/s/resharding/resharding_recipient_service_external_state_test.cpp b/src/mongo/db/s/resharding/resharding_recipient_service_external_state_test.cpp index 491aa085f15..44129350344 100644 --- a/src/mongo/db/s/resharding/resharding_recipient_service_external_state_test.cpp +++ b/src/mongo/db/s/resharding/resharding_recipient_service_external_state_test.cpp @@ -243,6 +243,14 @@ public: } ASSERT_EQ(indexesCopy.size(), 0); } + + void verifyTempReshardingCollectionAndMetadata() { + RecipientStateMachineExternalStateImpl externalState; + externalState.ensureTempReshardingCollectionExistsWithIndexes( + operationContext(), kMetadata, kDefaultFetchTimestamp); + CollectionShardingRuntime csr(getServiceContext(), kOrigNss, executor()); + ASSERT(csr.getCurrentMetadataIfKnown() == boost::none); + } }; TEST_F(RecipientServiceExternalStateTest, ReshardingConfigServerUpdatesHaveNoTimeout) { @@ -309,9 +317,7 @@ TEST_F(RecipientServiceExternalStateTest, CreateLocalReshardingCollectionBasic) expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost())); }); - RecipientStateMachineExternalStateImpl externalState; - externalState.ensureTempReshardingCollectionExistsWithIndexes( - operationContext(), kMetadata, kDefaultFetchTimestamp); + verifyTempReshardingCollectionAndMetadata(); future.default_timed_get(); @@ -362,9 +368,7 @@ TEST_F(RecipientServiceExternalStateTest, expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost())); }); - RecipientStateMachineExternalStateImpl externalState; - externalState.ensureTempReshardingCollectionExistsWithIndexes( - operationContext(), kMetadata, kDefaultFetchTimestamp); + verifyTempReshardingCollectionAndMetadata(); future.default_timed_get(); @@ -425,9 +429,7 @@ TEST_F(RecipientServiceExternalStateTest, expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost())); }); - RecipientStateMachineExternalStateImpl externalState; - externalState.ensureTempReshardingCollectionExistsWithIndexes( - operationContext(), kMetadata, kDefaultFetchTimestamp); + verifyTempReshardingCollectionAndMetadata(); future.default_timed_get(); @@ -490,9 +492,7 @@ TEST_F(RecipientServiceExternalStateTest, expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost())); }); - RecipientStateMachineExternalStateImpl externalState; - externalState.ensureTempReshardingCollectionExistsWithIndexes( - operationContext(), kMetadata, kDefaultFetchTimestamp); + verifyTempReshardingCollectionAndMetadata(); future.default_timed_get(); @@ -545,9 +545,7 @@ TEST_F(RecipientServiceExternalStateTest, expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost())); }); - RecipientStateMachineExternalStateImpl externalState; - externalState.ensureTempReshardingCollectionExistsWithIndexes( - operationContext(), kMetadata, kDefaultFetchTimestamp); + verifyTempReshardingCollectionAndMetadata(); future.default_timed_get(); |