Skip to content

Commit 989fdfe

Browse files
committed
PYTHON-5505 Fix RetryableWriteError label check
1 parent 194863f commit 989fdfe

File tree

2 files changed

+10
-12
lines changed

2 files changed

+10
-12
lines changed

pymongo/asynchronous/mongo_client.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2811,24 +2811,23 @@ async def run(self) -> T:
28112811

28122812
# Specialized catch on write operation
28132813
if not self._is_read:
2814+
retryable_write_label = False
28142815
if isinstance(exc, ClientBulkWriteException) and exc.error:
28152816
if isinstance(exc.error, PyMongoError):
2816-
retryable_write_error_exc = exc.error.has_error_label(
2817-
"RetryableWriteError"
2818-
)
2817+
retryable_write_label = exc.error.has_error_label("RetryableWriteError")
28192818
always_retryable = exc.error.has_error_label("Retryable")
28202819
overloaded = exc.error.has_error_label("SystemOverloaded")
28212820
else:
2822-
retryable_write_error_exc = exc.has_error_label("RetryableWriteError")
2821+
retryable_write_label = exc.has_error_label("RetryableWriteError")
28232822
always_retryable = exc.has_error_label("Retryable")
28242823
overloaded = exc.has_error_label("SystemOverloaded")
28252824
if not self._retryable and not always_retryable:
28262825
raise
2827-
if retryable_write_error_exc or always_retryable:
2826+
if retryable_write_label or always_retryable:
28282827
assert self._session
28292828
await self._session._unpin()
28302829
if not always_retryable and (
2831-
not retryable_write_error_exc or not self._is_not_eligible_for_retry()
2830+
not retryable_write_label or not self._is_not_eligible_for_retry()
28322831
):
28332832
if exc.has_error_label("NoWritesPerformed") and self._last_error:
28342833
raise self._last_error from exc

pymongo/synchronous/mongo_client.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2801,24 +2801,23 @@ def run(self) -> T:
28012801

28022802
# Specialized catch on write operation
28032803
if not self._is_read:
2804+
retryable_write_label = False
28042805
if isinstance(exc, ClientBulkWriteException) and exc.error:
28052806
if isinstance(exc.error, PyMongoError):
2806-
retryable_write_error_exc = exc.error.has_error_label(
2807-
"RetryableWriteError"
2808-
)
2807+
retryable_write_label = exc.error.has_error_label("RetryableWriteError")
28092808
always_retryable = exc.error.has_error_label("Retryable")
28102809
overloaded = exc.error.has_error_label("SystemOverloaded")
28112810
else:
2812-
retryable_write_error_exc = exc.has_error_label("RetryableWriteError")
2811+
retryable_write_label = exc.has_error_label("RetryableWriteError")
28132812
always_retryable = exc.has_error_label("Retryable")
28142813
overloaded = exc.has_error_label("SystemOverloaded")
28152814
if not self._retryable and not always_retryable:
28162815
raise
2817-
if retryable_write_error_exc or always_retryable:
2816+
if retryable_write_label or always_retryable:
28182817
assert self._session
28192818
self._session._unpin()
28202819
if not always_retryable and (
2821-
not retryable_write_error_exc or not self._is_not_eligible_for_retry()
2820+
not retryable_write_label or not self._is_not_eligible_for_retry()
28222821
):
28232822
if exc.has_error_label("NoWritesPerformed") and self._last_error:
28242823
raise self._last_error from exc

0 commit comments

Comments
 (0)