Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-95600

Implement socket timeouts in egress gRPC

    • Type: Icon: Task Task
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Networking & Observability

      We set SO_RCVTIMEO and SO_SNDTIMEO on ASIO in order to implement socket timeouts. However, there is no equivalent in gRPC-- the closest we have is deadlines, which sets a date after which the stream will be terminated. This doesn't really serve the same purpose, however, and could get pretty tricky for long-running, but active, streams. 

      Decide if we plan to respect socket timeouts in gRPC, and update the gRPC egress implementation to correctly propagate the socket timeout. This will require updating the following callsites:

      • connection_string_connect.cpp  -- the socket timeout gets dropped, we need to pass it along here.
      • It gets renamed as the "connectTimeout" in the _streamFactory, but it should really be used as the socket timeout, which was its original purpose. 

      After this ticket is complete, the jstests/noPassthrough/architecture/socket_disconnect_kills.js test should be re-enabled.

            Assignee:
            Unassigned Unassigned
            Reporter:
            erin.mcnulty@mongodb.com Erin McNulty
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: