-
Type: Epic
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Retryability
Summary
Allow users to configure the timeout on operations by using a single timeout setting.
Motivation
Users have an array of options governing timeouts:
Driver timeouts: Server selection timeout, socket write timeout, socket read timeout, socket connect timeout
Server timeouts: maxTimeMS, maxAwaitTimeMS, wTimeout.
Users are often times unaware of the existence of all these settings and the effect they have on the timeout behavior of the driver and server. Due to this lack of awareness and understanding users often leave these settings at their defaults which is not necessarily what they desire in their timeout behaviors. Furthermore, timeout interaction with retryable writes compounds the situation. The timeout settings do not provide any clarity or reassurance of how long a user will wait for any given write or read.
We should also determine if the desired behavior should be, retry as many times as possible within the defined time period.
Cast of Characters
Lead: Jeff Yemin
Author: Divjot Arora
POCs: Java, C, Go, Swift
Product Owner:
Documentation
- is duplicated by
-
GODRIVER-1738 Client side operations Timeout
- Closed
- is related to
-
GODRIVER-1799 Avoiding connection storms
- Released
-
GODRIVER-2622 Stabilize CSOT
- Development Complete
-
GODRIVER-3173 CSOT avoid connection churn when operations timeout
- Blocked