Repository navigation
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.
Add execution-context generation token to DI snapshots #6233
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
base: master
Are you sure you want to change the base?
Add execution-context generation token to DI snapshots #6233
Changes from all commits
404cde131301fe90ada79b19e391d69181318ade86985a23b667b78c6de128fa41f48b3b073bc2a95bbed2cf3be95c6989cc906092ae0103f7728391be105874f5e3575cda971e9c5b447b34a0File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When a frozen thread terminates and Ruby later allocates another Thread at the same
VALUEaddress, this lookup returns the dead thread's token, so two distinct threads emit the same generation value. The table declaration itself notes that entries outlive their threads and addresses can be reused; use GC-aware storage or remove entries when their Thread is collected so the token remains unique per Thread.Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When an application freezes
Thread.currentbefore a probed call, the first token lookup reaches thisrb_ivar_set, which raisesFrozenErrorbecause the receiver is frozen. Since every snapshot now calls this primitive, DI then drops all snapshots from that thread under the default rescue behavior, or can propagate the exception in development mode; keep the token in storage that does not mutate the Thread object or provide a fallback for frozen threads.Useful? React with 👍 / 👎.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fresh evidence after the earlier thread-field comment is this newly added fragment: it tells customers that the token disambiguates reused thread IDs, but the emitted payload still sets
logger.thread_idtonil, so no ID is available to pair with the generation. Describegenerationas the standalone per-thread identifier actually emitted instead.AGENTS.md reference: AGENTS.md:L174-L175
Useful? React with 👍 / 👎.
Uh oh!
There was an error while loading. Please reload this page.