Awaitable hello streaming monitoring and FaaS polling
Parent: SDAM Topology State Machine · Published reference · snapshot 2026-10-27
↓ Facts as markdownall context files
Source-anchored research for Awaitable hello streaming monitoring and FaaS polling. Run status: COMPLETED.
These notes link each claim to its source. Some citations identify archived research reports that are no longer hosted on this site. A published reference means the content is available; it does not certify independent review or accuracy.Read the editorial policy and follow the sources before relying on a claim.
How it works
- Streaming adds OP_MSG exhaustAllowed to awaitable hello. moreToCome permits successive replies without new requests; drivers process every reply in arrival order and send another awaitable request when a successful reply ends the stream. (low confidence) [source]
- SERVER-128517 describes very small pre-auth streamable-hello waits, especially zero, creating rapid server wakeups. The server implementation can clamp a requested wait to minWaitForStreamingHelloMillis or reject it when abortStreamingHelloWithSmallTimeout is enabled; deployments require version-specific verification. (high confidence) (verified as of 2026-10-27) [source]
- FaaS suspension can accumulate streamed heartbeats and force clients to process stale responses after resumption. This motivated the polling default; streaming also costs an additional RTT connection and thread per monitored server. (high confidence) [source]
Problems, failure modes and limitations
- AWS documents that Lambda freezes an execution environment once the runtime and extensions finish and no events remain. Unfinished background callbacks or processes resume if Lambda reuses that environment; continuous monitor execution between invocations cannot be assumed. (high confidence) (verified as of 2026-10-27) [source]
- An awaited heartbeat may normally last about ten seconds with the default heartbeat interval. The awaited event field distinguishes intentional server waiting from a slow ordinary heartbeat; duration alone is not network RTT. (low confidence) [source]
Comparisons and alternatives
- The FaaS polling default is scoped to supported driver monitoring modes, rather than a claim that streaming is universally unsuitable. Explicit serverMonitoringMode permits an override when platform detection is inaccurate or polling is preferable elsewhere. (high confidence) [source]
Facts and statements
- Awaitable hello is discovered through topologyVersion in a hello response. Requests supply topologyVersion and maxAwaitTimeMS; the server replies on a processId mismatch, a greater topology counter, or expiry of the maximum wait. (high confidence) [source]
- serverMonitoringMode defaults to auto: detected FaaS uses poll, other environments use stream. Explicit poll forces polling; stream uses streaming only if supported, otherwise polling. Detection follows the handshake client.env rules. (high confidence) [source]
- Polling performs hello or legacy hello checks and sleeps heartbeatFrequencyMS between checks. Streaming instead begins the next read immediately after a successful response and sets maxAwaitTimeMS to heartbeatFrequencyMS. (high confidence) [source]
- Streaming measures RTT with periodic regular hello commands on a separate dedicated connection; streaming response duration must not update RTT. Polling must not create a dedicated RTT connection. (high confidence) [source]
- FaaS suspension can accumulate stale streaming heartbeats; DRIVERS-2578 also identifies socket timeouts after runtime resumption as motivation for polling. (high confidence) [source]
- NODE-6839 records a reconnection complaint after upgrading to Mongoose 8 and driver 6, but its resolution is Gone away with no fix version. It does not establish a confirmed current driver-wide regression. (low confidence) (verified as of 2025-03-26) [source]
- Node.js timers define eligibility thresholds, not exact execution times. Starting with libuv 1.45.0 in Node.js 20, timers run after poll in each loop iteration, with a compatibility timer pass before entering the loop. Historical claims that timers always precede socket reads require runtime-specific qualification. (high confidence) (verified as of 2026-10-27) [source]
- For awaitable replies, a nonzero connectTimeoutMS becomes a socket timeout of connectTimeoutMS plus heartbeatFrequencyMS. A zero connectTimeoutMS remains unlimited, including awaitable replies. (low confidence) [source]
Children
- No children recorded.