Skip to content

PYTHON-5290 - Align client bulkwrite prose test with spec - #3009

Merged
NoahStapp merged 3 commits into
mongodb:mainfrom
NoahStapp:PYTHON-5290-1
Aug 28, 2026
Merged

PYTHON-5290 - Align client bulkwrite prose test with spec#3009
NoahStapp merged 3 commits into
mongodb:mainfrom
NoahStapp:PYTHON-5290-1

Conversation

@NoahStapp

Copy link
Copy Markdown
Contributor

PYTHON-5290

Changes in this PR

The test_timeout_in_multi_batch_bulk_write must only be run against standalone topologies according to the spec
, but we currently apply no such limitation. This PR aligns us with the spec.

Test Plan

N/A

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?

Copilot AI lite review requested due to automatic review settings August 27, 2026 13:56
@NoahStapp
NoahStapp requested a review from a team as a code owner August 27, 2026 13:56
@NoahStapp
NoahStapp requested a review from aclark4life August 27, 2026 13:56

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

Aligns the Client-Side Operations Timeout (CSOT) prose test test_timeout_in_multi_batch_bulk_write with the CSOT specification requirement that it only run against standalone topologies, preventing it from running in unsupported environments.

Changes:

  • Restrict test_timeout_in_multi_batch_bulk_write to standalone topology via require_standalone (sync + async variants).
  • Remove the prior @flaky(...) decorator from that test (sync + async variants).

Reviewed changes

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

File Description
test/test_client_bulk_write.py Adds @client_context.require_standalone to the CSOT multi-batch bulk write timeout test (sync).
test/asynchronous/test_client_bulk_write.py Adds @async_client_context.require_standalone to the same CSOT test (async).

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

Comment on lines 631 to 634
@client_context.require_version_min(8, 0, 0, -24)
@client_context.require_failCommand_fail_point
@flaky(reason="PYTHON-5290", max_runs=3, affects_cpython_linux=True)
@client_context.require_standalone
def test_timeout_in_multi_batch_bulk_write(self):
Comment on lines 635 to 638
@async_client_context.require_version_min(8, 0, 0, -24)
@async_client_context.require_failCommand_fail_point
@flaky(reason="PYTHON-5290", max_runs=3, affects_cpython_linux=True)
@async_client_context.require_standalone
async def test_timeout_in_multi_batch_bulk_write(self):
@codecov

codecov Bot commented Aug 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

from pymongo.errors import (
ClientBulkWriteException,
DocumentTooLarge,
InvalidOperation,

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.

Maybe we should leave this explicit import because without it it's only covered by from pymongo.operations import * accidentally. InvalidOperation still appears to be in use on lines 52 and 535.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

If it's being imported somehow and the file doesn't fail to run then I don't see the need for a second explicit import.

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.

The reason is (leaving aside the "code smell" of * imports …) from pymongo.operations import * is (typically) for things in pymongo.operations and so if operations one day decides to not import InvalidOperation then this test unexpectedly breaks.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Resolved by removing the * import entirely and explicitly importing instead.

@NoahStapp
NoahStapp requested a review from aclark4life August 28, 2026 18:06
@NoahStapp
NoahStapp merged commit 5cf3268 into mongodb:main Aug 28, 2026
52 of 53 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