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 <[email protected]>
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