fix(ipc): cancellation-priority timeout classification; structurally-enforced no-throw cancel send
This commit is contained in:
@@ -604,8 +604,16 @@ running on it, and the rule above still holds. A command whose envelope is still
|
||||
in the gateway's outbound queue needs no special handling: the queue is FIFO, so
|
||||
the worker reads the command and then its cancel and drops it before execution.
|
||||
|
||||
Failing to send the cancel is logged at debug and never replaces the
|
||||
`CommandTimeout` the caller is owed.
|
||||
Cancels ride the same outbound channel as commands, whose capacity is
|
||||
`MaxPendingCommands + 4`: the reserve above the pending-command limit is what
|
||||
absorbs them, so a burst of timeouts stays bounded and cannot deadlock the
|
||||
enqueue path. Failing to send the cancel is logged at debug and never replaces
|
||||
the `CommandTimeout` the caller is owed.
|
||||
|
||||
Cancellation outranks the deadline. When a caller's token is canceled around the
|
||||
same time the timeout fires, the command is reported as canceled
|
||||
(`GatewayShutdown`, `OperationCanceledException`), not as `CommandTimeout`, and
|
||||
no cancel is forwarded.
|
||||
|
||||
## Fault Model
|
||||
|
||||
|
||||
Reference in New Issue
Block a user