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

Reply via email to