Provide higher-level timeouts
-----------------------------
Key: THRIFT-1085
URL: https://issues.apache.org/jira/browse/THRIFT-1085
Project: Thrift
Issue Type: New Feature
Components: Ruby - Library
Affects Versions: 0.7
Reporter: Brandon Mitchell
Priority: Minor
The timeout used by the Socket transport applies per read/write. Either in
addition to or in lieu of these per-syscall timeouts, we would like a way to
provide a higher-level, per message timeout which may span multiple read/write
calls.
For example, with a simple service defined like:
{noformat}
service Echo {
string echo(1: string s)
}
{noformat}
The generated client will look something like:
{noformat}
module Echo
class Client
include ::Thrift::Client
def echo(s)
send_echo(s)
return recv_echo()
end
def send_echo(s)
send_message('echo', Echo_args, :s => s)
end
def recv_echo()
result = receive_message(Echo_result)
return result.success unless result.success.nil?
raise
::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT,
'echo failed: unknown result')
end
end
end
{noformat}
As the code is written now, if the timeout for Echo::Client#echo is defined as
1 second, it is possible for up to *2* seconds to pass in a single call.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira