fix(utils): prevent race conditions when validating documents #5795
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.
Description
Make
validateGqlDocuments()
validation results more deterministic for cases when documents may include multiple anonymous definition nodes, where previously validateGraphQLDocuments() util would merge definitions in a way that created a risk for a race condition to take place depending on how fast the anonymous nodes get processed (definitions are keyed offDate.now().toString()
), and blocked off certain validation rules.This change essentially merges all definitions into one document as-is, with the exception of
FRAGMENT_DEFINITION
nodes, which get deduplicated based off their name. In turn this enables certain GraphQL rules, such aslone-anonymous-operation
(spec),unique-operation-names
(spec).Type of change
expected)
Screenshots/Sandbox (if appropriate/relevant):
N/A
How Has This Been Tested?
Verified that a validation error is returned when multiple documents include an anonymous query.
Test Environment:
N/A
Checklist:
CONTRIBUTING doc and the
style guidelines of this project
Further comments
N/A