Skip to content

PYTHON-6049 - Allow the full range of possible errors for a CSOT timeout - #3005

Merged
NoahStapp merged 1 commit into
mongodb:mainfrom
NoahStapp:PYTHON-6049
Aug 25, 2026
Merged

PYTHON-6049 - Allow the full range of possible errors for a CSOT timeout#3005
NoahStapp merged 1 commit into
mongodb:mainfrom
NoahStapp:PYTHON-6049

Conversation

@NoahStapp

Copy link
Copy Markdown
Contributor

PYTHON-6049

Changes in this PR

The test_callback_not_retried_after_csot_timeout test explicitly checks that the raised error is an ExecutionTimeout to assert that the CSOT timeout has expired. This is inconsistent with how the unified tests assert the same behavior, which is by checking the timeout attribute on the error itself. Since a CSOT timeout expiring during an operation can raise multiple kinds of errors depending on the exact time and place it occurs, this causes the test to be flaky.

This PR aligns the test with how the unified tests assert for CSOT timeout expiration.

Test Plan

Test changes.

Checklist

Checklist for Author

  • [ ] Did you update the changelog (if necessary)?
  • Is there test coverage?
  • [ ] Is any followup work tracked in a JIRA ticket? If so, add link(s).

Checklist for Reviewer

  • Does the title of the PR reference a JIRA Ticket?
  • Do you fully understand the implementation? (Would you be comfortable explaining how this code works to someone else?)
  • Is all relevant documentation (README or docstring) updated?

@NoahStapp
NoahStapp requested a review from a team as a code owner August 25, 2026 14:26
@NoahStapp
NoahStapp requested review from sleepyStick and a lite review from Copilot August 25, 2026 14:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the transactions CSOT regression test to assert timeout semantics (via the exception’s timeout attribute) instead of asserting a single concrete exception type, matching the approach used by the unified CSOT tests and reducing flakiness.

Changes:

  • Broaden the expected exception in test_callback_not_retried_after_csot_timeout from ExecutionTimeout to PyMongoError.
  • Assert ctx.exception.timeout to validate that the failure was caused by a timeout, regardless of the specific error subclass.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
test/test_transactions.py Updates the synchronous transactions CSOT test to assert exception.timeout instead of requiring ExecutionTimeout.
test/asynchronous/test_transactions.py Mirrors the same CSOT assertion change for the asynchronous transactions CSOT test.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@codecov

codecov Bot commented Aug 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@NoahStapp

Copy link
Copy Markdown
Contributor Author

Failures are unrelated.

@NoahStapp
NoahStapp merged commit 50f5afe into mongodb:main Aug 25, 2026
84 of 90 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants