-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Connection Layer
-
Labels:
Use Case
As a Node.js Driver user
I want the driver to attempt to use all A and AAAA records for each hostname
So that the driver automatically handles connecting to exclusively IPv4 or exclusively IPv6 bound servers without needing configuration changes.
User Impact
- Users will be able to connect to servers bound to IPv4 or 6 or both addresses
- Driver will prefer IPv6 addresses
Dependencies
- The driver will own DNS lookup steps prior to socket creation
Unknowns
- How does this impact unix socket usage? Does a driver continue to use unix sockets?
- Should connectTimeoutMS and/or CSOT control how long we wait for DNS to resolve?
- What logging if any should be included before/after lookup?
Acceptance Criteria
Implementation Requirements
- Hostnames should be resolved to AAAA and A records
- The driver should prefer connecting to IPv6 addresses, but attempt all
Testing Requirements
- Remove all DNS resolution order settings
- Ensure that localhost resolving to ipv6 and v4 work (can use sinon for this)
Documentation Requirements
- Remove note about handling for IPv4/6 from readme
Follow Up Requirements
- None.
- is depended on by
-
COMPASS-6516 Investigate changes in NODE-4926: Support autoSelectFamily and autoSelectFamilyAttemptTimeout in options
- Waiting (Blocked)
- is duplicated by
-
NODE-4884 Implement Happy Eyeballs when connecting to a server
- Closed
- related to
-
DRIVERS-402 Implement fallback to IP v4/IP v6 vice-versa
- Closed
-
NODE-1222 Implement fallback to IP v4/IP v6 vice-versa
- Closed
-
NODE-4926 Support autoSelectFamily and autoSelectFamilyAttemptTimeout in options
- Closed