-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Networking & Observability
-
Networking & Obs 2025-01-20, Egress gRPC 2025-01-31, Egress gRPC 2025-02-14
-
200
-
5
Right now on stream establishment in TLConnection, we unconditionally perform the MongoDB handshake on each new connection (https://github.com/10gen/mongo/blob/72aff07b32ff4db49475493949823bf9694fc263/src/mongo/executor/connection_pool_tl.cpp#L434-L441) in order to exchange metadata/initialize the wire version. However, when gRPC is being used, we should instead prefer the metadata/wire version exchange protocol specified in the MongoDB gRPC protocol, which doesn't use a handshake and instead uses the gRPC metadata.
Because gRPC uses roughly a stream per operation, it is bad for performance to do this handshake on each new stream, which is why we will instead use the metadata gossiping protocol.
Configure TLConnection class to skip the handshake when gRPC is being used.
- is depended on by
-
SERVER-99246 Implement ConnectionPoolStats in gRPC AsyncClientFactory
- In Progress
-
SERVER-99034 Ensure dropAllConnections command drops gRPC channels
- In Code Review
-
SERVER-98590 Adapt Session API to gracefully finish and record stream termination status
- Closed