I've removed timeouts from "operation cost controls" because I feel these are different (but related) concerns. Cost controls typically do counting (depth / list depth / fields per selection set / aliases / resolver calls / @defer instances / input value depth / etc) whereas timeouts are purely temporal and much broader.
Timeouts:
- parsing
- validation
- (planning)
- execution
To be aware of:
- use an abort signal or similar to cancel work when a timeout fires
- share a single abort signal across the entire operation
- subscription operations should have per-event (per-payload) timeouts rather than per-operation
- incremental delivery might want intra-payload timeouts - if the next payload doesn't come in time, cancel everything
I've removed timeouts from "operation cost controls" because I feel these are different (but related) concerns. Cost controls typically do counting (depth / list depth / fields per selection set / aliases / resolver calls /
@deferinstances / input value depth / etc) whereas timeouts are purely temporal and much broader.Timeouts:
To be aware of: