Skip to content

Ensure composition settings are properly initialized#9070

Merged
tobias-tengler merged 1 commit into
mainfrom
tte/fix-composition-null-reference-exception
Jan 27, 2026
Merged

Ensure composition settings are properly initialized#9070
tobias-tengler merged 1 commit into
mainfrom
tte/fix-composition-null-reference-exception

Conversation

@tobias-tengler
Copy link
Copy Markdown
Member

No description provided.

Copilot AI review requested due to automatic review settings January 27, 2026 13:22
@tobias-tengler tobias-tengler force-pushed the tte/fix-composition-null-reference-exception branch from e4e35c4 to d66e44c Compare January 27, 2026 13:29
Copy link
Copy Markdown
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 PR ensures that composition settings are properly initialized when deserializing from JSON, particularly when dealing with older or differently formatted composition settings.

Changes:

  • Added a JsonConstructor to CompositionSettings to handle initialization of nested properties during deserialization
  • Simplified the default CompositionSettings creation in FusionComposeCommand by removing redundant explicit initialization
  • Added logging for source schema download operations in FusionPublishCommand

Reviewed changes

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

File Description
src/Nitro/CommandLine/src/CommandLine/Settings/CompositionSettings.cs Added JsonConstructor to ensure all nested properties (Preprocessor, Merger, Satisfiability) are initialized with non-null default instances during deserialization, even when properties are missing from older JSON formats
src/Nitro/CommandLine/src/CommandLine/Commands/Fusion/FusionComposeCommand.cs Simplified GetCompositionSettingsAsync by removing redundant explicit initialization of EnableGlobalObjectIdentification, relying instead on the new constructor defaults
src/Nitro/CommandLine/src/CommandLine/Commands/Fusion/FusionPublishCommand.cs Added informative logging when downloading source schema versions to improve user feedback during publish operations

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

@tobias-tengler tobias-tengler merged commit d38f97c into main Jan 27, 2026
116 checks passed
@tobias-tengler tobias-tengler deleted the tte/fix-composition-null-reference-exception branch January 27, 2026 13:37
@github-actions
Copy link
Copy Markdown
Contributor

🚀 Fusion Gateway Performance Results

Simple Composite Query

Constant Load (50 VUs)

Requests/sec Error Rate
5818.74 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.79ms 7.16ms 162.41ms 8.44ms 12.91ms 18.49ms

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

Requests/sec Error Rate
4529.39 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.83ms 38.72ms 297.67ms 49.00ms 111.04ms 127.11ms

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
271.02 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
12.70ms 173.98ms 631.19ms 178.91ms 225.29ms 249.97ms

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

Requests/sec Error Rate
305.44 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
3.06ms 674.71ms 1665.17ms 693.35ms 1397.55ms 1496.72ms

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
23754.42 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.09ms 1.69ms 44.05ms 2.05ms 3.91ms 4.77ms

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

Requests/sec Error Rate
18788.95 req/s 0.00%
📊 Response Time Metrics
Min Med Max Avg P90 P95
0.09ms 9.18ms 120.45ms 11.19ms 23.06ms 27.80ms

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 21399074311 • Commit bda9250 • Tue, 27 Jan 2026 13:48:18 GMT

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants