summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/resharding/resharding_recipient_service_external_state_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/s/resharding/resharding_recipient_service_external_state_test.cpp')
-rw-r--r--src/mongo/db/s/resharding/resharding_recipient_service_external_state_test.cpp72
1 files changed, 51 insertions, 21 deletions
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 ad04e9623dd..4d36d53415e 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
@@ -58,10 +58,12 @@ public:
const ShardKeyPattern kShardKey = ShardKeyPattern(BSON("oldKey" << 1));
const OID kOrigEpoch = OID::gen();
const UUID kOrigUUID = UUID::gen();
+ const Timestamp kOrigTimestamp = Timestamp(1);
const NamespaceString kOrigNss = NamespaceString("db.foo");
const ShardKeyPattern kReshardingKey = ShardKeyPattern(BSON("newKey" << 1));
const OID kReshardingEpoch = OID::gen();
const UUID kReshardingUUID = UUID::gen();
+ const Timestamp kReshardingTimestamp = Timestamp(2);
const NamespaceString kReshardingNss = NamespaceString(
str::stream() << "db." << NamespaceString::kTemporaryReshardingCollectionPrefix
<< kOrigUUID);
@@ -139,11 +141,12 @@ public:
const ShardKeyPattern& skey,
UUID uuid,
OID epoch,
+ Timestamp timestamp,
const BSONObj& collation = {}) {
auto future = scheduleRoutingInfoForcedRefresh(tempNss);
expectFindSendBSONObjVector(kConfigHostAndPort, [&]() {
- CollectionType coll(tempNss, epoch, Date_t::now(), uuid);
+ CollectionType coll(tempNss, epoch, timestamp, Date_t::now(), uuid);
coll.setKeyPattern(skey.getKeyPattern());
coll.setUnique(false);
coll.setDefaultCollation(collation);
@@ -161,7 +164,7 @@ public:
reshardingFields.setRecipientFields(recipientFields);
coll.setReshardingFields(reshardingFields);
- ChunkVersion version(1, 0, epoch, boost::none /* timestamp */);
+ ChunkVersion version(1, 0, epoch, timestamp);
ChunkType chunk(uuid,
{skey.getKeyPattern().globalMin(), skey.getKeyPattern().globalMax()},
@@ -180,13 +183,14 @@ public:
void expectRefreshReturnForOriginalColl(const NamespaceString& origNss,
const ShardKeyPattern& skey,
UUID uuid,
- OID epoch) {
+ OID epoch,
+ Timestamp timestamp) {
expectFindSendBSONObjVector(kConfigHostAndPort, [&]() {
- CollectionType coll(origNss, epoch, Date_t::now(), uuid);
+ CollectionType coll(origNss, epoch, timestamp, Date_t::now(), uuid);
coll.setKeyPattern(skey.getKeyPattern());
coll.setUnique(false);
- ChunkVersion version(1, 0, epoch, boost::none /* timestamp */);
+ ChunkVersion version(1, 0, epoch, timestamp);
ChunkType chunk(uuid,
{skey.getKeyPattern().globalMin(), skey.getKeyPattern().globalMax()},
@@ -280,8 +284,12 @@ TEST_F(RecipientServiceExternalStateTest, CreateLocalReshardingCollectionBasic)
}
// Simulate a refresh for the temporary resharding collection.
- loadOneChunkMetadataForTemporaryReshardingColl(
- kReshardingNss, kOrigNss, kReshardingKey, kReshardingUUID, kReshardingEpoch);
+ loadOneChunkMetadataForTemporaryReshardingColl(kReshardingNss,
+ kOrigNss,
+ kReshardingKey,
+ kReshardingUUID,
+ kReshardingEpoch,
+ kReshardingTimestamp);
const std::vector<BSONObj> indexes = {BSON("v" << 2 << "key" << BSON("_id" << 1) << "name"
<< "_id_"),
@@ -291,7 +299,8 @@ TEST_F(RecipientServiceExternalStateTest, CreateLocalReshardingCollectionBasic)
<< "name"
<< "indexOne")};
auto future = launchAsync([&] {
- expectRefreshReturnForOriginalColl(kOrigNss, kShardKey, kOrigUUID, kOrigEpoch);
+ expectRefreshReturnForOriginalColl(
+ kOrigNss, kShardKey, kOrigUUID, kOrigEpoch, kOrigTimestamp);
expectListCollections(
kOrigNss,
kOrigUUID,
@@ -328,8 +337,12 @@ TEST_F(RecipientServiceExternalStateTest,
}
// Simulate a refresh for the temporary resharding collection.
- loadOneChunkMetadataForTemporaryReshardingColl(
- kReshardingNss, kOrigNss, kReshardingKey, kReshardingUUID, kReshardingEpoch);
+ loadOneChunkMetadataForTemporaryReshardingColl(kReshardingNss,
+ kOrigNss,
+ kReshardingKey,
+ kReshardingUUID,
+ kReshardingEpoch,
+ kReshardingTimestamp);
const std::vector<BSONObj> indexes = {BSON("v" << 2 << "key" << BSON("_id" << 1) << "name"
<< "_id_"),
@@ -339,7 +352,8 @@ TEST_F(RecipientServiceExternalStateTest,
<< "name"
<< "indexOne")};
auto future = launchAsync([&] {
- expectRefreshReturnForOriginalColl(kOrigNss, kShardKey, kOrigUUID, kOrigEpoch);
+ expectRefreshReturnForOriginalColl(
+ kOrigNss, kShardKey, kOrigUUID, kOrigEpoch, kOrigTimestamp);
expectStaleDbVersionError(kOrigNss, "listCollections");
expectGetDatabase(kOrigNss, shards[1].getHost());
expectListCollections(
@@ -352,7 +366,8 @@ TEST_F(RecipientServiceExternalStateTest,
HostAndPort(shards[1].getHost()));
expectStaleEpochError(kOrigNss, "listIndexes");
- expectRefreshReturnForOriginalColl(kOrigNss, kShardKey, kOrigUUID, kOrigEpoch);
+ expectRefreshReturnForOriginalColl(
+ kOrigNss, kShardKey, kOrigUUID, kOrigEpoch, kOrigTimestamp);
expectListIndexes(kOrigNss, kOrigUUID, indexes, HostAndPort(shards[0].getHost()));
});
@@ -381,8 +396,12 @@ TEST_F(RecipientServiceExternalStateTest,
}
// Simulate a refresh for the temporary resharding collection.
- loadOneChunkMetadataForTemporaryReshardingColl(
- kReshardingNss, kOrigNss, kReshardingKey, kReshardingUUID, kReshardingEpoch);
+ loadOneChunkMetadataForTemporaryReshardingColl(kReshardingNss,
+ kOrigNss,
+ kReshardingKey,
+ kReshardingUUID,
+ kReshardingEpoch,
+ kReshardingTimestamp);
const std::vector<BSONObj> indexes = {BSON("v" << 2 << "key" << BSON("_id" << 1) << "name"
<< "_id_"),
@@ -407,7 +426,8 @@ TEST_F(RecipientServiceExternalStateTest,
}
auto future = launchAsync([&] {
- expectRefreshReturnForOriginalColl(kOrigNss, kShardKey, kOrigUUID, kOrigEpoch);
+ expectRefreshReturnForOriginalColl(
+ kOrigNss, kShardKey, kOrigUUID, kOrigEpoch, kOrigTimestamp);
expectListCollections(
kOrigNss,
kOrigUUID,
@@ -444,8 +464,12 @@ TEST_F(RecipientServiceExternalStateTest,
}
// Simulate a refresh for the temporary resharding collection.
- loadOneChunkMetadataForTemporaryReshardingColl(
- kReshardingNss, kOrigNss, kReshardingKey, kReshardingUUID, kReshardingEpoch);
+ loadOneChunkMetadataForTemporaryReshardingColl(kReshardingNss,
+ kOrigNss,
+ kReshardingKey,
+ kReshardingUUID,
+ kReshardingEpoch,
+ kReshardingTimestamp);
const std::vector<BSONObj> indexes = {BSON("v" << 2 << "key" << BSON("_id" << 1) << "name"
<< "_id_"),
@@ -472,7 +496,8 @@ TEST_F(RecipientServiceExternalStateTest,
}
auto future = launchAsync([&] {
- expectRefreshReturnForOriginalColl(kOrigNss, kShardKey, kOrigUUID, kOrigEpoch);
+ expectRefreshReturnForOriginalColl(
+ kOrigNss, kShardKey, kOrigUUID, kOrigEpoch, kOrigTimestamp);
expectListCollections(
kOrigNss,
kOrigUUID,
@@ -509,8 +534,12 @@ TEST_F(RecipientServiceExternalStateTest,
}
// Simulate a refresh for the temporary resharding collection.
- loadOneChunkMetadataForTemporaryReshardingColl(
- kReshardingNss, kOrigNss, kReshardingKey, kReshardingUUID, kReshardingEpoch);
+ loadOneChunkMetadataForTemporaryReshardingColl(kReshardingNss,
+ kOrigNss,
+ kReshardingKey,
+ kReshardingUUID,
+ kReshardingEpoch,
+ kReshardingTimestamp);
const std::vector<BSONObj> indexes = {BSON("v" << 2 << "key" << BSON("_id" << 1) << "name"
<< "_id_"),
@@ -527,7 +556,8 @@ TEST_F(RecipientServiceExternalStateTest,
operationContext(), kReshardingNss, optionsAndIndexes);
auto future = launchAsync([&] {
- expectRefreshReturnForOriginalColl(kOrigNss, kShardKey, kOrigUUID, kOrigEpoch);
+ expectRefreshReturnForOriginalColl(
+ kOrigNss, kShardKey, kOrigUUID, kOrigEpoch, kOrigTimestamp);
expectListCollections(
kOrigNss,
kOrigUUID,