-
Type: Task
-
Resolution: Fixed
-
Priority: Critical - P2
-
Affects Version/s: None
-
Component/s: Spec Comp
-
None
Summary
TheĀ serverless test suite is currently run directly against Atlas proxies, as this allows drivers to run certain test against a single proxy if required (e.g. if a failpoint needs to be tripped) and target failpoints to individual proxies (e.g. for the mongos pinning tests). However, in the near future the proxies will be moving behind a load balancer, which makes both of these impossible.
The existing load balancer tests avoid this issue by spinning up two different load balancers, one that fronts a single mongos and one that fronts multiple, and conditionally uses each as necessary. We could consider doing something similar for serverless, though it would require changes Atlas side.
Motivation
Without a solution to this problem, drivers testing of serverless will be limited.
Does this ticket have a required timeline? What is it?
All serverless instances will be moving behind load balancers in ~1 month.
Is this ticket only for tests?
Yes
Notes for Language Authors
Drivers that already implemented Serverless testing before load balancing must opt in to testing load balanced Serverless instances.
- Pass LOADBALANCED=ON as an environment variable to .evergreen/serverless/create-instance.sh to create a load balanced AWS backed instance.
- Use the new expansions SINGLE_ATLASPROXY_LB_URI and MULTI_ATLASPROXY_LB_URI in place of SINGLE_LB_MONGOS_URI and MULTI_LB_MONGOS_URI in load balancer tests.
- See the Go POC for an example of updating existing Serverless.
- depends on
-
CDRIVER-4207 mongoc_topology_scanner_node_t.last_failed ignores errors outside of monitoring for singled-threaded SDAM
- Closed
-
PHPC-1752 Load Balancer Support
- Development Complete
- related to
-
PHPLIB-794 Use multi-server URIs for load balancer tests when useMultipleMongoses is true
- Closed
-
DRIVERS-1968 Single-threaded SDAM should construct a handshake command when reconnecting after a monitoring or application error/timeout
- Closed