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

---------------------------------------------------

                 Key: THRIFT-1302
                 URL: https://issues.apache.org/jira/browse/THRIFT-1302
             Project: Thrift
          Issue Type: Improvement
          Components: C++ - Library
            Reporter: Dave Watson
            Priority: Minor


>From 1f76284b5972ab01d6f6ac68f96024a8066a3b59 Mon Sep 17 00:00:00 2001
From: Adam Simpkins <simpk...@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(-)



--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to