-
Type: Bug
-
Resolution: Fixed
-
Priority: Minor - P4
-
Affects Version/s: 2.5
-
Component/s: Connectivity
-
None
As part of gossiping the cluster time the driver appends a $clusterTime element to the command sent to the server.
The code in CommandUsingCommandMessageWireProtocol looks like this:
var clusterTimeElement = new BsonElement("$clusterTime", _session.ClusterTime); extraElements.Add(clusterTimeElement);
The driver is supposed to send the greater of the session's ClusterTime and the cluster's ClusterTime. The line of code as written above assumes that the _session value is an instance of ClusterClockAdvancingClusterTime and that ClusterClockAdvancingClusterTime will be the one to compare the two ClusterTimes and return the greater of the two.
The current implementation of ClusterClockAdvancingClusterTime neglected to do that.
ClusterClockAdvancingClusterTime needs to override the ClusterTime property to return the greater of the two ClusterTimes.