Skip to content

Commit 6ceace6

Browse files
authored
fix(NODE-3192): check clusterTime is defined before access (#2806)
1 parent 1967515 commit 6ceace6

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

lib/core/wireprotocol/command.js

+10-5
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,19 @@ function _command(server, ns, cmd, options, callback) {
4545
const shouldUseOpMsg = supportsOpMsg(server);
4646
const session = options.session;
4747

48-
let clusterTime = server.clusterTime;
48+
const serverClusterTime = server.clusterTime;
49+
let clusterTime = serverClusterTime;
4950
let finalCmd = Object.assign({}, cmd);
5051
if (hasSessionSupport(server) && session) {
52+
const sessionClusterTime = session.clusterTime;
5153
if (
52-
session.clusterTime &&
53-
session.clusterTime.clusterTime.greaterThan(clusterTime.clusterTime)
54+
serverClusterTime &&
55+
serverClusterTime.clusterTime &&
56+
sessionClusterTime &&
57+
sessionClusterTime.clusterTime &&
58+
sessionClusterTime.clusterTime.greaterThan(serverClusterTime.clusterTime)
5459
) {
55-
clusterTime = session.clusterTime;
60+
clusterTime = sessionClusterTime;
5661
}
5762

5863
const err = applySession(session, finalCmd, options);
@@ -61,8 +66,8 @@ function _command(server, ns, cmd, options, callback) {
6166
}
6267
}
6368

64-
// if we have a known cluster time, gossip it
6569
if (clusterTime) {
70+
// if we have a known cluster time, gossip it
6671
finalCmd.$clusterTime = clusterTime;
6772
}
6873

0 commit comments

Comments
 (0)