You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TASK-032-002: Extend GroupByRequestKeyStage with multi-slot SubflowGroup
Refactors `GroupByRequestKeyStage` to support N substream slots per
`RequestEndpoint` key, enabling parallel connections when a slot is
backpressured (e.g. HTTP/2 MaxConcurrentStreams reached).
Key changes:
- New `SubflowGroup` nested class holds `List<SubflowState>` slots per key
- `SubflowState.HasCapacity` property: `!IsDead && !Offering`
- `_subflows` changed from `Dictionary<RequestEndpoint, SubflowState>` to
`Dictionary<RequestEndpoint, SubflowGroup>`
- New `maxSubstreamsPerKey` constructor parameter (default `1`)
- `HandlePush` routing: find capacity slot → or create new slot → or route
to least-loaded slot when all limits are reached
- Dead slot handling via `HandleDeadSlot`: transfers pending items to an
alive slot in the same group, or creates a replacement slot
- `TryFinish` and `TryCompleteStage` iterate all slots across all groups
- `_onOfferComplete` identifies slots by reference within the group
- `maxSubstreamsPerKey = 1` is fully backward-compatible with prior behavior
0 commit comments