From 6ceace6b245c42b8498fb1b13e7c37a97a46946d Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Tue, 18 May 2021 08:52:18 -0400 Subject: [PATCH] fix(NODE-3192): check clusterTime is defined before access (#2806) --- lib/core/wireprotocol/command.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/core/wireprotocol/command.js b/lib/core/wireprotocol/command.js index fd581c84f4..9e687f8c95 100644 --- a/lib/core/wireprotocol/command.js +++ b/lib/core/wireprotocol/command.js @@ -45,14 +45,19 @@ function _command(server, ns, cmd, options, callback) { const shouldUseOpMsg = supportsOpMsg(server); const session = options.session; - let clusterTime = server.clusterTime; + const serverClusterTime = server.clusterTime; + let clusterTime = serverClusterTime; let finalCmd = Object.assign({}, cmd); if (hasSessionSupport(server) && session) { + const sessionClusterTime = session.clusterTime; if ( - session.clusterTime && - session.clusterTime.clusterTime.greaterThan(clusterTime.clusterTime) + serverClusterTime && + serverClusterTime.clusterTime && + sessionClusterTime && + sessionClusterTime.clusterTime && + sessionClusterTime.clusterTime.greaterThan(serverClusterTime.clusterTime) ) { - clusterTime = session.clusterTime; + clusterTime = sessionClusterTime; } const err = applySession(session, finalCmd, options); @@ -61,8 +66,8 @@ function _command(server, ns, cmd, options, callback) { } } - // if we have a known cluster time, gossip it if (clusterTime) { + // if we have a known cluster time, gossip it finalCmd.$clusterTime = clusterTime; }