-
Type: Task
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
-
Service arch 2020-06-29, Service arch 2020-07-13, Service Arch 2020-07-27
We have a subsystem of specialized code dedicated to networking as a client to other servers (egress). It lives mostly in src/mongo/executor/ with some additional parts in src/mongo/client/.
Notable classes include (but are not limited to):
- NetworkInterface
- NetworkInterfaceTL
- TaskExecutor
- RemoteCommandResponse
- RemoteCommandRequest
- executor::ConnectionPool
- EgressTagCloser
- AsyncDBClient
There are a few distinct topics to speak to:
- Remote Commands
- Connection Pooling
- Legacy Networking (DBClient et al)
Egress networking is notably used across our codebase and lives in several directories, we should document it with a new markdown file in docs/.
This is intended to be abstract documentation, describe relationships and state transitions not code in common language.