<!-- llms-explorer concept facts · https://llms-explorer.com/tree/awaitable-hello-streaming-monitoring-and-faas-polling/ · pack 2026-10-27 · ~1401 tokens -->

# Awaitable hello streaming monitoring and FaaS polling

> Source-anchored research for Awaitable hello streaming monitoring and FaaS polling. Run status: COMPLETED.

Parent: [SDAM Topology State Machine](https://llms-explorer.com/tree/sdam-topology-state-machine/) · 4 facets · 14 facts · page: https://llms-explorer.com/tree/awaitable-hello-streaming-monitoring-and-faas-polling/

## 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](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)
- 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](https://jira.mongodb.org/browse/SERVER-128517)
- 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](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)

## 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](https://docs.aws.amazon.com/us_en/lambda/latest/dg/lambda-runtime-environment.html)
- 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](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)

## 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](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)

## 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](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)
- 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](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)
- 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](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)
- 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](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)
- FaaS suspension can accumulate stale streaming heartbeats; DRIVERS-2578 also identifies socket timeouts after runtime resumption as motivation for polling. (high confidence) — [source](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)
- 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](https://jira.mongodb.org/browse/NODE-6839)
- 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](https://nodejs.org/en/learn/asynchronous-work/event-loop-timers-and-nexttick)
- 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](https://specifications.readthedocs.io/en/latest/server-discovery-and-monitoring/server-monitoring/)
