The causal consistency design document states that $clusterTime is included in all responses, even ones reporting an error, as in:
replset:SECONDARY> db.runCommand({find : "test", readConcern : {level : "local"} })
{
"operationTime" : Timestamp(1506613470, 1),
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk",
"$clusterTime" : {
"clusterTime" : Timestamp(1506613470, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
At least one error condition violates the rule:
replset:SECONDARY> db.runCommand({find : "test", readConcern : {level : "majority"}, $readPreference : {mode : "secondary"} })
{
"ok" : 0,
"errmsg" : "Majority read concern requested, but server was not started with --enableMajorityReadConcern.",
"code" : 148,
"codeName" : "ReadConcernMajorityNotEnabled"
}
The expected behavior is that the response contains a $clusterTime.
- related to
-
SERVER-31887 clusterTime advanced on primary without anything being written to oplog
-
- Closed
-