Uploaded image for project: 'Drivers'
  1. Drivers
  2. DRIVERS-1246

Clarify whether a read / write timeout should be distinguished in SDAM error handling

      When a network error occurs on an application socket SDAM currently says a post-handshake network timeout should not mark the server as Unknown.

      If there is a network timeout on the connection after the handshake completes, the client MUST NOT mark the server Unknown. (A timeout may indicate a slow operation on the server, rather than an unavailable server.)

      libmongoc distinguished read timeouts and write timeouts. A read timeout does not mark the server Unknown, but a write timeout does.

      Changes in CDRIVER-3615 will remove the distinction this to adhere to the specs, but this may be behavior worth considering.

      I think this boils down to whether a write timeout means the socket is bad. I could see an argument made that a write timeout is more likely to indicate a bad socket than a read timeout, but here are some counterarguments:

      • Long running server operations could still cause a write timeout. E.g. an unsatisfied write concern, or an update with a filter requiring a collection scan.
      • In general, if a user specifies a small socket timeout, we may not want to mark the server unknown since that would require repeatedly rediscovering the server.

            Assignee:
            Unassigned Unassigned
            Reporter:
            kevin.albertson@mongodb.com Kevin Albertson
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: