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