From 0aefc6c19b3d0e2c4017a66cd33a7418e2257c97 Mon Sep 17 00:00:00 2001 From: Shane Harvey Date: Fri, 23 Feb 2018 11:32:39 -0800 Subject: [PATCH] PYTHON-1434 Update max cluster time even when heartbeats fail --- pymongo/monitor.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pymongo/monitor.py b/pymongo/monitor.py index e57ca68df..4c0f3182e 100644 --- a/pymongo/monitor.py +++ b/pymongo/monitor.py @@ -173,6 +173,12 @@ class Monitor(object): Can raise ConnectionFailure or OperationFailure. """ start = _time() - return (sock_info.ismaster(self._pool.opts.metadata, - self._topology.max_cluster_time()), - _time() - start) + try: + return (sock_info.ismaster(self._pool.opts.metadata, + self._topology.max_cluster_time()), + _time() - start) + except OperationFailure as exc: + # Update max cluster time even when isMaster fails. + self._topology.receive_cluster_time( + exc.details.get('$clusterTime')) + raise