summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierlauro Sciarelli <pierlauro.sciarelli@mongodb.com>2020-09-09 15:06:30 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-09-10 08:23:25 +0000
commit9dac088a96526c9f2854d09d55125c8a76e9de71 (patch)
treef80b742c7c384ebec8862cf68ab13254fc9f6b6c
parent57cb74336b8d6a64b4d4ce5e3c34baa0534fabfb (diff)
downloadmongo-9dac088a96526c9f2854d09d55125c8a76e9de71.tar.gz
SERVER-50853 Enable retries of getShardAndCollectionVersion on the config server
-rw-r--r--src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp b/src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp
index 3e2b4e0f8c7..2d40f65eaed 100644
--- a/src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp
+++ b/src/mongo/db/s/config/sharding_catalog_manager_chunk_operations.cpp
@@ -335,12 +335,14 @@ BSONObj getShardAndCollectionVersion(OperationContext* opCtx,
ChunkVersion shardVersion;
if (!swDonorShardVersion.isOK()) {
- // The query to find 'nss' chunks belonging to the donor shard didn't return any, meaning
- // the last chunk was donated
- uassert(505770,
- str::stream() << "Couldn't retrieve donor chunks from config server",
- swDonorShardVersion.getStatus().code() == 50577);
- shardVersion = ChunkVersion(0, 0, collectionVersion.epoch());
+ if (swDonorShardVersion.getStatus().code() == 50577) {
+ // The query to find 'nss' chunks belonging to the donor shard didn't return any chunks,
+ // meaning the last chunk for fromShard was donated. Gracefully handle the error.
+ shardVersion = ChunkVersion(0, 0, collectionVersion.epoch());
+ } else {
+ // Bubble up any other error
+ uassertStatusOK(swDonorShardVersion);
+ }
} else {
shardVersion = swDonorShardVersion.getValue();
}