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-20 20:27:05 +0000 |
commit | acef8a36dfb37a1ed2d3db9760724557d2caa794 (patch) | |
tree | 883447e393a33893b6cac6aa7244d0cb55bc4f65 | |
parent | c8d7be21cf6b6ba10d0bb38191403ed27d5d88cb (diff) | |
download | mongo-acef8a36dfb37a1ed2d3db9760724557d2caa794.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 06b08fe4f66..2dc584953d6 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 80ae276c5a3..4035fe97d51 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 @@ -248,6 +248,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) { @@ -313,9 +321,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(); @@ -372,9 +378,7 @@ TEST_F(RecipientServiceExternalStateTest, expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost())); }); - RecipientStateMachineExternalStateImpl externalState; - externalState.ensureTempReshardingCollectionExistsWithIndexes( - operationContext(), kMetadata, kDefaultFetchTimestamp); + verifyTempReshardingCollectionAndMetadata(); future.default_timed_get(); @@ -440,9 +444,7 @@ TEST_F(RecipientServiceExternalStateTest, expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost())); }); - RecipientStateMachineExternalStateImpl externalState; - externalState.ensureTempReshardingCollectionExistsWithIndexes( - operationContext(), kMetadata, kDefaultFetchTimestamp); + verifyTempReshardingCollectionAndMetadata(); future.default_timed_get(); @@ -510,9 +512,7 @@ TEST_F(RecipientServiceExternalStateTest, expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost())); }); - RecipientStateMachineExternalStateImpl externalState; - externalState.ensureTempReshardingCollectionExistsWithIndexes( - operationContext(), kMetadata, kDefaultFetchTimestamp); + verifyTempReshardingCollectionAndMetadata(); future.default_timed_get(); @@ -570,9 +570,7 @@ TEST_F(RecipientServiceExternalStateTest, expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost())); }); - RecipientStateMachineExternalStateImpl externalState; - externalState.ensureTempReshardingCollectionExistsWithIndexes( - operationContext(), kMetadata, kDefaultFetchTimestamp); + verifyTempReshardingCollectionAndMetadata(); future.default_timed_get(); |