Don't dedupe span metadata by id() (fix flaky test_collections_metadata)#9316
Merged
Conversation
Contributor
Unit Test ResultsSee test report for an extended history of previous test failures. This is useful for diagnosing flaky tests. 19 files - 21 19 suites - 21 16h 34m 20s ⏱️ + 1h 33m 58s Results for commit 6fa439b. ± Comparison against base commit ace5560. This pull request removes 4154 and adds 5000 tests. Note that renamed tests count towards both.♻️ This comment has been updated with latest results. |
d964072 to
354ec06
Compare
4 tasks
test_collection_metadatatest_collection_metadata
Span.add_metadata deduplicated incoming metadata via a class-level set of id(metadata) values that was never pruned. Since CPython recycles the id of garbage-collected objects, the metadata of a new graph submission could collide with the id of a previous, dead metadata dict and be silently dropped, leaving Span.metadata as None. The set also grew unboundedly over the lifetime of the scheduler. The only deduplication actually needed is within a single observe_tasks call, where all tasks of one graph submission share the same metadata object. Do that with a local set instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6fa439b to
9f6efcb
Compare
test_collection_metadatatest_collections_metadata)
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Span.add_metadataused a class-level id-based de-duplication system that was tracking the id of already seen metadata. However,idis volatile and can be reused by the CPython interpreter as soon as the original object with that id is dereferenced. This caused legitimate new metadata to be occasionally dropped.This deduplication also grew unboundedly over the lifetime of the scheduler.
The only deduplication actually needed is within a single
observe_taskscall, where all tasks of one graph submission share the same metadata object.