summaryrefslogtreecommitdiff
path: root/src/mongo/db/logical_time_validator.cpp
diff options
context:
space:
mode:
authorCheahuychou Mao <mao.cheahuychou@gmail.com>2020-10-08 21:07:08 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-10-19 20:19:23 +0000
commitea2b9e00c0bd78c72ba601484d3b10bf2c1fd290 (patch)
treebe8a08079da417f0e8bcebf947a2e557d46436f6 /src/mongo/db/logical_time_validator.cpp
parent4ad809ceae835d19990c19923d37121500d6dae6 (diff)
downloadmongo-ea2b9e00c0bd78c72ba601484d3b10bf2c1fd290.tar.gz
SERVER-51426 Verify that a client cannot gossip clusterTime from a donor replica set to a recipient replica set
Diffstat (limited to 'src/mongo/db/logical_time_validator.cpp')
-rw-r--r--src/mongo/db/logical_time_validator.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/mongo/db/logical_time_validator.cpp b/src/mongo/db/logical_time_validator.cpp
index 56abc27ab46..d88bbbd3294 100644
--- a/src/mongo/db/logical_time_validator.cpp
+++ b/src/mongo/db/logical_time_validator.cpp
@@ -50,6 +50,7 @@ namespace mongo {
namespace {
+MONGO_FAIL_POINT_DEFINE(alwaysValidateClientsClusterTime);
MONGO_FAIL_POINT_DEFINE(throwClientDisconnectInSignLogicalTimeForExternalClients);
const auto getLogicalTimeValidator =
@@ -158,7 +159,8 @@ SignedLogicalTime LogicalTimeValidator::signLogicalTime(OperationContext* opCtx,
Status LogicalTimeValidator::validate(OperationContext* opCtx, const SignedLogicalTime& newTime) {
{
stdx::lock_guard<Latch> lk(_mutex);
- if (newTime.getTime() <= _lastSeenValidTime.getTime()) {
+ if (newTime.getTime() <= _lastSeenValidTime.getTime() &&
+ !MONGO_unlikely(alwaysValidateClientsClusterTime.shouldFail())) {
return Status::OK();
}
}