-
-
Notifications
You must be signed in to change notification settings - Fork 786
Shared Execution Pipeline #8329
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
Merged
Merged
Conversation
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
…; removed SubscriptionEventContext; added WarmupRequestContextExtensions for warmup request checks; updated error kinds to include SubscriptionEventError and OtherError.
…and methods for consistency; updated related middleware and extension methods accordingly.
… handling methods in RequestExecutorBuilderExtensions to use RequestMiddlewareConfiguration instead of RequestCoreMiddlewareConfiguration. Updated GraphQLRequestParserTests to replace QueryId with DocumentId and adjusted related assertions. Cleaned up code formatting in PersistedOperationNotFoundMiddleware and IntegrationTests.
…ensions for improved clarity and added null handling. Updated IVariableValueCollection interface to include NotNullWhen attribute for TryGetValue method.
…re for improved clarity and maintainability. Introduced CommonMiddleware class to centralize middleware configurations. Updated related methods to reflect these changes, enhancing the overall structure of the request execution pipeline.
…ng new middleware configurations for handling warmup requests and automatically managing persisted operation not found errors. Updated related classes and methods to enhance clarity and maintainability, ensuring a more streamlined request execution process.
…rProvider classes for enhanced request execution management - Introduced DefaultRequestContext to manage request-specific data and features. - Implemented DefaultRequestExecutor to handle the execution of GraphQL requests, including batch processing. - Created RequestExecutorProvider to manage the lifecycle of request executors, including warmup tasks and event subscriptions. - Added interfaces for IRequestExecutor, IRequestExecutorEvents, and IRequestExecutorProvider to define the contract for request execution and event handling. - Established a feature pooling mechanism with PooledFeature and PooledFeatureCollection to optimize feature management in request contexts. - Enhanced validation capabilities with ValidatorFeature for extending document validation contexts. These changes improve the clarity, maintainability, and performance of the request execution pipeline, ensuring a more robust handling of GraphQL operations.
…the codebase - Replaced instances of IRequestExecutorResolver with IRequestExecutorProvider in various classes and tests to standardize the request execution management. - Updated service registrations and method calls to reflect the new interface, ensuring consistency in the execution pipeline. - Enhanced clarity and maintainability of the code by aligning with the recent architectural changes in request execution handling. These modifications improve the overall structure and coherence of the request execution framework.
- Replaced instances of GetRequestExecutorAsync with GetExecutorAsync across various classes and tests to align with the updated IRequestExecutorProvider interface. - Enhanced consistency in the request execution management by ensuring all references utilize the new method signature. - Improved code clarity and maintainability by reflecting recent architectural changes in the execution pipeline. These modifications contribute to a more coherent and efficient handling of GraphQL requests.
…tency - Updated middleware definitions in various tests to use a consistent parameter pattern, enhancing readability and maintainability. - Replaced lambda expressions in middleware setup with a more standardized syntax for better clarity. - Improved the overall structure of request handling across multiple test files, ensuring a uniform approach to middleware configuration. These changes contribute to a more coherent and efficient request execution framework.
- Updated snapshots in OperationRequestBuilderTests to reflect changes in DocumentId and DocumentHash structures, ensuring they now include IsEmpty and Value properties. - Modified CostAnalyzerMiddleware to utilize TryGetOperationId for better clarity and error handling. - Enhanced OperationDocumentHash and OperationDocumentId structs to provide a clearer representation of empty states. - Adjusted PersistedOperationNotFoundMiddleware and ReadPersistedOperationMiddleware to reference the new OperationDocumentInfo structure. - Corrected service registration keys in various tests to align with the new namespace for IOperationDocumentStorage. - Improved overall code readability and consistency across the middleware and document handling components.
…tency - Simplified constant definitions by replacing byte arrays with string literals for operation names, improving code clarity. - Adjusted the handling of DocumentId and OperationName in the request parsing logic to enhance maintainability. - Cleaned up unused variables and improved overall structure in the Utf8GraphQLRequestParser class. These changes contribute to a more coherent and efficient parsing mechanism for GraphQL requests.
- Renamed InvalidQueryIdFormat to InvalidOperationIdFormat for clarity in error messaging. - Updated error messages to reflect the new operation id format. - Enhanced the request parsing logic to throw OperationIdFormatException when an invalid operation id is encountered. - Improved comments for better understanding of the request parsing process. These changes contribute to clearer error handling and improved maintainability in the request parsing components.
- Introduced PooledRequestContext to optimize request context handling and improve performance through pooling. - Updated references from DefaultRequestContext to PooledRequestContext across the execution pipeline. - Enhanced error messages related to invalid operation IDs for better clarity. - Removed the ReadRequestPropertiesMiddleware to streamline the middleware configuration process. These changes contribute to improved performance and clarity in request execution management.
… the 'if' variable
- Introduced support for `application/graphql-response+jsonl` and `application/jsonl` content types in the AcceptMediaType and ContentType classes. - Updated AcceptMediaTypeKind and ResponseContentType enums to include new media types. - Implemented JsonLinesResultFormatter for handling JSON Lines formatted responses. - Refactored DefaultHttpResponseFormatter to accommodate new response formats and ensure proper handling of streaming responses. These changes improve the flexibility and functionality of the GraphQL response handling in the application.
… and add line ending normalization
…lity and performance - Moved encoding and transcoding logic to HttpTransportUtilities. - Introduced GraphQLHttpSingleResultEnumerable for handling single result responses. - Updated ReadAsResultStreamAsync to simplify response handling. - Replaced HashSet with List for task management in DefaultRequestExecutor for better performance. - Renamed ConcurrentPipeWriter to ConcurrentStreamWriter and updated its implementation to use Stream directly. - Refactored EventStreamResultFormatter and JsonLinesResultFormatter to utilize the new ConcurrentStreamWriter. - Updated tests to reflect changes in method signatures and improve cancellation handling.
…a generated document ID
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.
This PR makes more of the execution infrastructure shareable between Fusion and HotChocolate.