-
Type:
Improvement
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Networking & Observability
-
Fully Compatible
-
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
-
- Closed
-
-
SERVER-98590 Adapt Session API to gracefully finish and record stream termination status
-
- Closed
-
-
SERVER-99034 Ensure dropAllConnections command drops gRPC channels
-
- Closed
-
- is related to
-
SERVER-97158 Add singleUseConnections flag to ConnectionPool::Options
-
- Closed
-