Skip to content

Fix QueryableOffsetPagingProvider.CanHandle for executable lists#9197

Merged
michaelstaib merged 2 commits intomainfrom
mst/issue-5082
Feb 25, 2026
Merged

Fix QueryableOffsetPagingProvider.CanHandle for executable lists#9197
michaelstaib merged 2 commits intomainfrom
mst/issue-5082

Conversation

@michaelstaib
Copy link
Copy Markdown
Member

@michaelstaib michaelstaib commented Feb 24, 2026

What

  • implement QueryableOffsetPagingProvider.CanHandle instead of throwing NotImplementedException
  • return support for array/list sources and guard null input
  • add regression coverage for executable fields with .AddQueryableOffsetPagingProvider()

Why

This reproduces and fixes #5082 where schema initialization could fail because CanHandle threw while probing paging providers.

Closes #5082

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 24, 2026

Fusion Gateway Performance Results

Simple Composite Query

Req/s Err%
Constant (50 VUs) 6906.58 0.00%
Ramping (0-500-0 VUs) 7404.46 0.00%
Response Times & Query
Min Med Avg P90 P95 Max
Constant 0.58ms 5.95ms 7.10ms 11.05ms 15.81ms 177.83ms
Ramping 0.57ms 24.09ms 29.81ms 63.48ms 75.87ms 177.81ms
query TestQuery {
  topProducts(first: 5) {
    inStock
    name
    price
    shippingEstimate
    upc
    weight
    reviews {
      id
      body
      author {
        id
        username
        name
      }
    }
  }
}

Deep Recursion Query

Req/s Err%
Constant (50 VUs) 1294.96 0.00%
Ramping (0-500-0 VUs) 1353.04 0.00%
Response Times & Query
Min Med Avg P90 P95 Max
Constant 4.39ms 34.08ms 37.46ms 51.04ms 59.66ms 384.92ms
Ramping 1.83ms 135.13ms 157.15ms 338.02ms 383.71ms 683.45ms
query TestQuery {
  users {
    id
    username
    name
    reviews {
      id
      body
      product {
        inStock
        name
        price
        shippingEstimate
        upc
        weight
        reviews {
          id
          body
          author {
            id
            username
            name
            reviews {
              id
              body
              product {
                inStock
                name
                price
                shippingEstimate
                upc
                weight
              }
            }
          }
        }
      }
    }
  }
  topProducts(first: 5) {
    inStock
    name
    price
    shippingEstimate
    upc
    weight
    reviews {
      id
      body
      author {
        id
        username
        name
        reviews {
          id
          body
          product {
            inStock
            name
            price
            shippingEstimate
            upc
            weight
          }
        }
      }
    }
  }
}

Variable Batching Throughput

Req/s Err%
Constant (50 VUs) 23589.00 0.00%
Ramping (0-500-0 VUs) 18388.27 0.00%
Response Times & Query
Min Med Avg P90 P95 Max
Constant 0.08ms 1.72ms 2.07ms 3.98ms 4.82ms 45.96ms
Ramping 0.08ms 9.32ms 11.44ms 23.73ms 28.53ms 108.89ms
query TestQuery($upc: ID!, $price: Long!, $weight: Long!) {
  productByUpc(upc: $upc) {
    inStock
    shippingEstimate(weight: $weight, price: $price)
  }
}

Variables (5 sets batched per request)

[
  { "upc": "1", "price": 899, "weight": 100 },
  { "upc": "2", "price": 1299, "weight": 1000 },
  { "upc": "3", "price": 15, "weight": 20 },
  { "upc": "4", "price": 499, "weight": 100 },
  { "upc": "5", "price": 1299, "weight": 1000 }
]

Run 22394542715 • Commit be59491 • Wed, 25 Feb 2026 11:38:43 GMT

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.

QueryableOffsetPagingProvider.cs CanHandle -> NotImplementedException

1 participant