-
-
Notifications
You must be signed in to change notification settings - Fork 801
Remove CombinedServiceProvider #8792
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
Conversation
5f36e6e to
ef09a5a
Compare
c08732d to
7cb0c59
Compare
7cb0c59 to
a76249a
Compare
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.
Pull Request Overview
This PR removes the CombinedServiceProvider infrastructure to achieve clearer separation between schema and application services in Hot Chocolate v16. The change improves AOT compatibility and service resolution transparency by requiring explicit cross-registration of application services into the schema service provider.
Key changes include:
- Removal of
CombinedServiceProviderandDictionaryServiceProviderclasses - Introduction of
AddApplicationService<T>()API for explicit cross-registration - Refactoring of Data layer handlers to use factory methods instead of type-based activation
- Updated documentation explaining the new service separation model
Reviewed Changes
Copilot reviewed 191 out of 192 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| CombinedServiceProvider.cs | Removed the combined service provider implementation |
| DictionaryServiceProvider.cs | Removed the dictionary-based service provider |
| migrate-from-15-to-16.md | Added migration documentation for the new service separation model |
| instrumentation.md | Updated to show required AddApplicationService call for custom enrichers |
| RequestExecutorBuilderExtensions.Services.cs | Added new AddApplicationService<T>() extension method |
| Various handler files | Added static Create factory methods for handler instantiation |
| Error messages and resources | Updated error messages to remove handler type information |
| Test files | Updated tests to use new APIs and remove references to removed classes |
Files not reviewed (1)
- src/HotChocolate/Data/src/Data/DataResources.Designer.cs: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
🚀 Fusion Gateway Performance ResultsSimple Composite QueryConstant Load (50 VUs)
📊 Response Time Metrics
Ramping Load (0→50→500→50 VUs)
📊 Response Time Metrics
Executed Query fragment User on User {
id
username
name
}
fragment Review on Review {
id
body
}
fragment Product on Product {
inStock
name
price
shippingEstimate
upc
weight
}
query TestQuery {
topProducts(first: 5) {
...Product
reviews {
...Review
author {
...User
}
}
}
}Deep Recursion QueryConstant Load (50 VUs)
📊 Response Time Metrics
Ramping Load (0→50→500→50 VUs)
📊 Response Time Metrics
Executed Query fragment User on User {
id
username
name
}
fragment Review on Review {
id
body
}
fragment Product on Product {
inStock
name
price
shippingEstimate
upc
weight
}
query TestQuery {
users {
...User
reviews {
...Review
product {
...Product
reviews {
...Review
author {
...User
reviews {
...Review
product {
...Product
}
}
}
}
}
}
}
topProducts(first: 5) {
...Product
reviews {
...Review
author {
...User
reviews {
...Review
product {
...Product
}
}
}
}
}
}Variable Batching ThroughputConstant Load (50 VUs)
📊 Response Time Metrics
Ramping Load (0→50→500→50 VUs)
📊 Response Time Metrics
Executed Query query TestQuery_8f7a46ce_2(
$__fusion_1_upc: ID!
$__fusion_2_price: Long!
$__fusion_2_weight: Long!
) {
productByUpc(upc: $__fusion_1_upc) {
inStock
shippingEstimate(weight: $__fusion_2_weight, price: $__fusion_2_price)
}
}Variables (5 sets batched in single request) [
{ "__fusion_1_upc": "1", "__fusion_2_price": 899, "__fusion_2_weight": 100 },
{ "__fusion_1_upc": "2", "__fusion_2_price": 1299, "__fusion_2_weight": 1000 },
{ "__fusion_1_upc": "3", "__fusion_2_price": 15, "__fusion_2_weight": 20 },
{ "__fusion_1_upc": "4", "__fusion_2_price": 499, "__fusion_2_weight": 100 },
{ "__fusion_1_upc": "5", "__fusion_2_price": 1299, "__fusion_2_weight": 1000 }
]No baseline data available for comparison. Run 19504385147 • Commit d76fc4e • Wed, 19 Nov 2025 14:34:35 GMT |
No description provided.