Skip to content

Commit e7c0814

Browse files
authored
PYTHON-4557 - Fix write log messages for retried commands (#2260)
1 parent b402239 commit e7c0814

File tree

4 files changed

+60
-6
lines changed

4 files changed

+60
-6
lines changed

pymongo/asynchronous/mongo_client.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2840,7 +2840,7 @@ async def _write(self) -> T:
28402840
_debug_log(
28412841
_COMMAND_LOGGER,
28422842
message=f"Retrying write attempt number {self._attempt_number}",
2843-
clientId=self._client.client_id,
2843+
clientId=self._client._topology_settings._topology_id,
28442844
commandName=self._operation,
28452845
operationId=self._operation_id,
28462846
)

pymongo/synchronous/mongo_client.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2826,7 +2826,7 @@ def _write(self) -> T:
28262826
_debug_log(
28272827
_COMMAND_LOGGER,
28282828
message=f"Retrying write attempt number {self._attempt_number}",
2829-
clientId=self._client.client_id,
2829+
clientId=self._client._topology_settings._topology_id,
28302830
commandName=self._operation,
28312831
operationId=self._operation_id,
28322832
)

test/asynchronous/test_logger.py

+29-2
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,42 @@ async def test_logging_retry_read_attempts(self):
102102
await self.db.test.insert_one({"x": "1"})
103103

104104
async with self.fail_point(
105-
{"mode": {"times": 1}, "data": {"failCommands": ["find"], "closeConnection": True}}
105+
{
106+
"mode": {"times": 1},
107+
"data": {
108+
"failCommands": ["find"],
109+
"errorCode": 10107,
110+
"errorLabels": ["RetryableWriteError"],
111+
},
112+
}
106113
):
107114
with self.assertLogs("pymongo.command", level="DEBUG") as cm:
108115
await self.db.test.find_one({"x": "1"})
109116

110117
retry_messages = [
111118
r.getMessage() for r in cm.records if "Retrying read attempt" in r.getMessage()
112119
]
113-
print(retry_messages)
120+
self.assertEqual(len(retry_messages), 1)
121+
122+
@async_client_context.require_failCommand_fail_point
123+
@async_client_context.require_retryable_writes
124+
async def test_logging_retry_write_attempts(self):
125+
async with self.fail_point(
126+
{
127+
"mode": {"times": 1},
128+
"data": {
129+
"errorCode": 10107,
130+
"errorLabels": ["RetryableWriteError"],
131+
"failCommands": ["insert"],
132+
},
133+
}
134+
):
135+
with self.assertLogs("pymongo.command", level="DEBUG") as cm:
136+
await self.db.test.insert_one({"x": "1"})
137+
138+
retry_messages = [
139+
r.getMessage() for r in cm.records if "Retrying write attempt" in r.getMessage()
140+
]
114141
self.assertEqual(len(retry_messages), 1)
115142

116143

test/test_logger.py

+29-2
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,42 @@ def test_logging_retry_read_attempts(self):
101101
self.db.test.insert_one({"x": "1"})
102102

103103
with self.fail_point(
104-
{"mode": {"times": 1}, "data": {"failCommands": ["find"], "closeConnection": True}}
104+
{
105+
"mode": {"times": 1},
106+
"data": {
107+
"failCommands": ["find"],
108+
"errorCode": 10107,
109+
"errorLabels": ["RetryableWriteError"],
110+
},
111+
}
105112
):
106113
with self.assertLogs("pymongo.command", level="DEBUG") as cm:
107114
self.db.test.find_one({"x": "1"})
108115

109116
retry_messages = [
110117
r.getMessage() for r in cm.records if "Retrying read attempt" in r.getMessage()
111118
]
112-
print(retry_messages)
119+
self.assertEqual(len(retry_messages), 1)
120+
121+
@client_context.require_failCommand_fail_point
122+
@client_context.require_retryable_writes
123+
def test_logging_retry_write_attempts(self):
124+
with self.fail_point(
125+
{
126+
"mode": {"times": 1},
127+
"data": {
128+
"errorCode": 10107,
129+
"errorLabels": ["RetryableWriteError"],
130+
"failCommands": ["insert"],
131+
},
132+
}
133+
):
134+
with self.assertLogs("pymongo.command", level="DEBUG") as cm:
135+
self.db.test.insert_one({"x": "1"})
136+
137+
retry_messages = [
138+
r.getMessage() for r in cm.records if "Retrying write attempt" in r.getMessage()
139+
]
113140
self.assertEqual(len(retry_messages), 1)
114141

115142

0 commit comments

Comments
 (0)