Read complete bounded Memcached responses
This commit is contained in:
@@ -214,6 +214,14 @@ hostcall loop therefore cannot renew an invocation indefinitely. Blocking host
|
||||
helpers retain operation-specific limits and cap them to the remaining
|
||||
invocation budget where the underlying operation is cancellable. Forked task
|
||||
callbacks receive a fresh invocation deadline capped by the task lifetime.
|
||||
The Memcached ASCII hostcall applies one deadline to the complete command write
|
||||
and protocol-framed response read. Retrieval payload lengths are parsed, so a
|
||||
payload containing `END` cannot terminate the response; multi-value and `stats`
|
||||
responses may span socket chunks up to the 8 MiB response bound. Timeout,
|
||||
malformed framing, or overflow shuts down the retained descriptor before
|
||||
returning an empty result, preventing unread response bytes from poisoning the
|
||||
next command on that connection. The native fallback uses the same parser and
|
||||
deadline contract.
|
||||
Synchronous compiler locks, transitive `#load` compilation, and compiler child
|
||||
processes consume that same deadline. Compiler children run in a dedicated
|
||||
process group; timeout kills the group, retains the previous generation, and
|
||||
|
||||
Reference in New Issue
Block a user