summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMisha Tyulenev <misha@mongodb.com>2016-02-09 14:39:31 -0500
committerMisha Tyulenev <misha@mongodb.com>2016-02-09 18:05:03 -0500
commit805b8c51a6103e0482df81b5ef9b3efd448b0806 (patch)
tree9b2645d797e4e783d5cfa01d04f5191d468299c9
parentd0cd37a4e24a1aa3859409fbb87f0248264040e6 (diff)
downloadmongo-805b8c51a6103e0482df81b5ef9b3efd448b0806.tar.gz
SERVER-22390 catch all errors in RangeDeleter::_waitForMajority
-rw-r--r--src/mongo/db/range_deleter.cpp26
1 files changed, 5 insertions, 21 deletions
diff --git a/src/mongo/db/range_deleter.cpp b/src/mongo/db/range_deleter.cpp
index 4f10d3ae8b9..af90affce72 100644
--- a/src/mongo/db/range_deleter.cpp
+++ b/src/mongo/db/range_deleter.cpp
@@ -264,32 +264,16 @@ bool _waitForMajority(OperationContext* txn, std::string* errMsg) {
repl::ReplicationCoordinator::StatusAndDuration replStatus =
repl::getGlobalReplicationCoordinator()->awaitReplicationOfLastOpForClient(txn,
writeConcern);
- Milliseconds elapsedTime = replStatus.duration;
- if (replStatus.status.code() == ErrorCodes::ExceededTimeLimit) {
- *errMsg = str::stream() << "rangeDeleter timed out after "
- << durationCount<Seconds>(elapsedTime)
- << " seconds while waiting"
- " for deletions to be replicated to majority nodes";
+ if (!replStatus.status.isOK()) {
+ *errMsg = str::stream() << "rangeDeleter failed while waiting for replication after "
+ << durationCount<Seconds>(replStatus.duration) << " seconds due to "
+ << replStatus.status.toString();
log() << *errMsg;
- } else if (replStatus.status.code() == ErrorCodes::NotMaster) {
- *errMsg = str::stream() << "rangeDeleter no longer PRIMARY after "
- << durationCount<Seconds>(elapsedTime)
- << " seconds while waiting"
- " for deletions to be replicated to majority nodes";
- } else if (replStatus.status.code() == ErrorCodes::InterruptedAtShutdown) {
- *errMsg = str::stream() << "rangeDeleter interrupted by shutdown while waiting for "
- "deletions to be replicated to a majority of nodes";
- } else {
- LOG(elapsedTime < Seconds(30) ? 1 : 0)
- << "rangeDeleter took " << durationCount<Seconds>(elapsedTime) << " seconds "
- << " waiting for deletes to be replicated to majority nodes";
-
- fassert(18512, replStatus.status);
}
return replStatus.status.isOK();
}
-}
+} // namespace
bool RangeDeleter::deleteNow(OperationContext* txn,
const RangeDeleterOptions& options,