Skip to content

Conversation

@tobias-tengler
Copy link
Member

No description provided.

Copilot AI review requested due to automatic review settings January 23, 2026 14:52
Copy link
Contributor

Copilot AI left a 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 pull request attempts to replace a custom JsonMarshal polyfill with the native System.Text.Json.JsonMarshal implementation by upgrading System.Text.Json to version 10.0.0 and removing the polyfill code.

Changes:

  • Added Directory.Build.user.props file with Nitro API credentials (should not be committed)
  • Removed JsonMarshal.cs polyfill from Utilities.Buffers
  • Added System.Text.Json package references to HotChocolate.Language.Web.csproj
  • Updated System.Text.Json and related package versions to 10.0.0

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
src/Nitro/CommandLine/src/CommandLine/Directory.Build.user.props Adds user-specific build configuration with API credentials - should not be committed
src/HotChocolate/Utilities/src/Utilities.Buffers/Polyfills/JsonMarshal.cs Removes JsonMarshal polyfill that provided compatibility for pre-.NET 9.0 frameworks
src/HotChocolate/Language/src/Language.Web/HotChocolate.Language.Web.csproj Adds System.Text.Json package reference for net8.0 and netstandard2.0 targets
src/Directory.Packages.props Updates System.Text.Json and related package versions to 10.0.0 across multiple target frameworks
Comments suppressed due to low confidence (1)

src/HotChocolate/Utilities/src/Utilities.Buffers/Polyfills/JsonMarshal.cs:1

  • The JsonMarshal polyfill is being completely removed, but it's still being used throughout the codebase in files that target net8.0 and netstandard2.0. JsonMarshal was added to System.Text.Json in .NET 9.0, but this codebase also targets net8.0 and netstandard2.0. Without this polyfill, code using JsonMarshal.GetRawUtf8Value() will fail to compile on net8.0 and netstandard2.0 targets. Files using JsonMarshal include: JsonValueParser.cs, JsonType.cs, GraphQLOverWebSocketProtocolHandler.cs, and FileSystemFusionConfigurationProvider.cs. The polyfill should be conditionally compiled for pre-.NET 9.0 frameworks only (using #if !NET9_0_OR_GREATER) instead of being deleted entirely.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +66 to +73
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="System.Text.Json" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="System.Text.Json" />
</ItemGroup>

Copy link

Copilot AI Jan 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These duplicate ItemGroup conditions for System.Text.Json package reference can be consolidated into a single ItemGroup that applies to both net8.0 and netstandard2.0. The duplication is unnecessary and makes the configuration harder to maintain.

Suggested change
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="System.Text.Json" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="System.Text.Json" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0' Or '$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="System.Text.Json" />
</ItemGroup>

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Contributor

🚀 Fusion Gateway Performance Results

Simple Composite Query

Constant Load (50 VUs)

Requests/sec Error Rate
5765.88 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.84ms 7.14ms 162.24ms 8.52ms 13.18ms 18.48ms

Ramping Load (0→50→500→50 VUs)

Requests/sec Error Rate
4603.78 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.77ms 40.82ms 292.05ms 48.15ms 104.62ms 121.27ms

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 Query

Constant Load (50 VUs)

Requests/sec Error Rate
269.69 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
12.88ms 173.60ms 654.58ms 179.99ms 225.49ms 248.88ms

Ramping Load (0→50→500→50 VUs)

Requests/sec Error Rate
306.50 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
3.03ms 674.38ms 1647.55ms 692.15ms 1370.25ms 1435.54ms

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 Throughput

Constant Load (50 VUs)

Requests/sec Error Rate
24110.28 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.09ms 1.67ms 45.93ms 2.03ms 3.86ms 4.72ms

Ramping Load (0→50→500→50 VUs)

Requests/sec Error Rate
18941.10 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.09ms 9.17ms 106.65ms 11.15ms 23.07ms 27.89ms

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 21290575461 • Commit d608f59 • Fri, 23 Jan 2026 15:20:18 GMT

@github-actions
Copy link
Contributor

🚀 Fusion Gateway Performance Results

Simple Composite Query

Constant Load (50 VUs)

Requests/sec Error Rate
5842.75 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.81ms 7.14ms 161.43ms 8.40ms 12.97ms 18.51ms

Ramping Load (0→50→500→50 VUs)

Requests/sec Error Rate
4558.19 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.79ms 39.15ms 282.30ms 48.64ms 108.91ms 126.08ms

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 Query

Constant Load (50 VUs)

Requests/sec Error Rate
266.43 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
12.78ms 174.88ms 564.24ms 182.03ms 225.76ms 254.14ms

Ramping Load (0→50→500→50 VUs)

Requests/sec Error Rate
304.33 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
3.05ms 690.55ms 1656.76ms 693.12ms 1358.05ms 1501.65ms

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 Throughput

Constant Load (50 VUs)

Requests/sec Error Rate
24038.72 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.09ms 1.67ms 43.83ms 2.03ms 3.87ms 4.75ms

Ramping Load (0→50→500→50 VUs)

Requests/sec Error Rate
19081.11 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.09ms 8.95ms 115.09ms 10.99ms 22.79ms 27.57ms

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 21291755894 • Commit 5a8209c • Fri, 23 Jan 2026 16:14:16 GMT

@tobias-tengler tobias-tengler marked this pull request as draft January 23, 2026 18:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants