Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-1302

thrift: raise an exception if send() times out in

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 0.8
    • C++ - Library
    • None

    Description

      From 1f76284b5972ab01d6f6ac68f96024a8066a3b59 Mon Sep 17 00:00:00 2001
      From: Adam Simpkins <simpkins@fb.com>
      Date: Fri, 16 Apr 2010 17:43:21 +0000
      Subject: [PATCH 22/33] thrift: raise an exception if send() times out in
      TSocket::write()

      Summary:
      Previously, if send() timed out in TSocket::write(), it would sleep for
      50 microseconds and retry. This essentially made the timeout set with
      setSendTimeout() useless. Now it raises a TTransportException on
      timeout.

      TNonblockingServer does use TSocket with the fd manually put in
      non-blocking mode, and that could cause EWOULDBLOCK and EAGAIN to occur
      during normal operation. However, it only uses write_partial() and
      never write(), so it should be safe to have write() throw the exception.

      Test Plan:
      Used the client and server in thrift/tutorial/cpp/async/sort/ to test
      sending a large message to the server. I set a 100ms timeout in the
      client, and verified that it correctly times out now if the server
      process is stopped.

      I also ran [fb unittests] to try and verify that this doesn't negatively
      affect any other code.

      Revert Plan:
      OK


      lib/cpp/src/transport/TSocket.cpp | 7 ++++---
      1 files changed, 4 insertions, 3 deletions

      Attachments

        Activity

          People

            davejwatson@fb Dave Watson
            davejwatson@fb Dave Watson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: