-
Notifications
You must be signed in to change notification settings - Fork 1.2k
PYTHON-5903 Retry attempts should share a single stable operation_id #2901
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
shrey-mongo
wants to merge
22
commits into
mongodb:main
Choose a base branch
from
shrey-mongo:shrey-mongo/PYTHON-5903
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
75f4e21
fixed merge conflict
shrey-mongo 7237bf1
fixed stale op id for reauth and killCursors ops and added justification
shrey-mongo 63312b0
PYTHON-5903 merged master and resolved op_id conflicts
shrey-mongo 643ccef
made requested changes
shrey-mongo 11223ce
Merge branch 'master' of https://github.com/mongodb/mongo-python-driv…
shrey-mongo b36e20b
made requested changes
shrey-mongo d8f29b9
implemented ContextVar approach for op_id
shrey-mongo 371b161
Merge branch 'master' of https://github.com/mongodb/mongo-python-driv…
shrey-mongo be5fa6e
Merge branch 'master' of https://github.com/mongodb/mongo-python-driv…
shrey-mongo dc74bf1
made requested changes
shrey-mongo f1e4285
Merge branch 'master' of https://github.com/mongodb/mongo-python-driv…
shrey-mongo 64fff02
fixed test coverage
shrey-mongo 005b6d4
Merge branch 'main' into shrey-mongo/PYTHON-5903
aclark4life 816ecf9
simplified _OpIdContext token handling
shrey-mongo e430689
updated changelog and test
shrey-mongo c3fcca5
fixed contextvars reset test to read executor task context
shrey-mongo 8382e1b
Merge branch 'main' into shrey-mongo/PYTHON-5903
aclark4life 2a5581e
addressed subTest ambiguity and OP_ID reset assertion
shrey-mongo 62ff0bb
Merge branch 'main' into shrey-mongo/PYTHON-5903
aclark4life aa5fe73
assert contextvars are present and reset in executor
shrey-mongo d9161e9
check contextvars against exact reset values
shrey-mongo 2290508
added op id guards for auto encryption
shrey-mongo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,46 @@ | ||
| # Copyright 2026-present MongoDB, Inc. | ||
| # | ||
| # Licensed under the Apache License, Version 2.0 (the "License"); you | ||
| # may not use this file except in compliance with the License. You | ||
| # may obtain a copy of the License at | ||
| # | ||
| # http://www.apache.org/licenses/LICENSE-2.0 | ||
| # | ||
| # Unless required by applicable law or agreed to in writing, software | ||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||
| # implied. See the License for the specific language governing | ||
| # permissions and limitations under the License. | ||
|
|
||
| """Internal helpers for the APM operation id. | ||
|
|
||
| The retryable read/write logic sets OP_ID for the duration of each attempt so | ||
| that every attempt of one logical operation publishes the same operation_id. | ||
| Commands run outside that scope (handshake, auth, killCursors, pinned-cursor | ||
| getMores) read the default None and fall back to their request_id. | ||
| """ | ||
|
|
||
| from __future__ import annotations | ||
|
|
||
| from contextlib import AbstractContextManager | ||
| from contextvars import ContextVar | ||
| from typing import Any, Optional | ||
|
|
||
| OP_ID: ContextVar[Optional[int]] = ContextVar("OP_ID", default=None) | ||
|
|
||
|
|
||
| def reset() -> None: | ||
| OP_ID.set(None) | ||
|
|
||
|
|
||
| class _OpIdContext(AbstractContextManager[Any]): | ||
| """Set OP_ID for the duration of a with block.""" | ||
|
|
||
| def __init__(self, op_id: Optional[int]): | ||
| self._op_id = op_id | ||
|
|
||
| def __enter__(self) -> None: | ||
| self._token = OP_ID.set(self._op_id) | ||
|
|
||
| def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None: | ||
| OP_ID.reset(self._token) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.