diff --git a/pymongo/mongo_client.py b/pymongo/mongo_client.py index 90e6a7706f..dd9dd6d33a 100644 --- a/pymongo/mongo_client.py +++ b/pymongo/mongo_client.py @@ -1170,8 +1170,8 @@ def _socket_for_reads(self, read_preference, session): # for topology type Single." # Thread safe: if the type is single it cannot change. topology = self._get_topology() - single = topology.description.topology_type == TOPOLOGY_TYPE.Single server = self._select_server(read_preference, session) + single = topology.description.topology_type == TOPOLOGY_TYPE.Single with self._get_socket(server, session) as sock_info: secondary_ok = (single and not sock_info.is_mongos) or ( diff --git a/test/mockupdb/test_op_msg_read_preference.py b/test/mockupdb/test_op_msg_read_preference.py index ba359a5e05..6ecc229ea1 100644 --- a/test/mockupdb/test_op_msg_read_preference.py +++ b/test/mockupdb/test_op_msg_read_preference.py @@ -158,15 +158,12 @@ def test(self): else: self.fail('unrecognized op_type %r' % operation.op_type) # For single mongod we send primaryPreferred instead of primary. - if (expected_pref == ReadPreference.PRIMARY and self.single_mongod - and operation.name != "command"): + if expected_pref == ReadPreference.PRIMARY and self.single_mongod: expected_pref = ReadPreference.PRIMARY_PREFERRED - with going(operation.function, client) as future: + with going(operation.function, client): request = expected_server.receive() request.reply(operation.reply) - future() # No error. - self.assertEqual(expected_pref.document, request.doc.get('$readPreference')) self.assertNotIn('$query', request.doc)