mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-07 10:48:51 +00:00
adding explicit timeout handling and error_logging
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666453 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ddffed5ff4
commit
c49dd1e9e2
@ -73,7 +73,7 @@ close(Transport) ->
|
||||
%% Description: Reads data through from the wrapped transoprt
|
||||
%%--------------------------------------------------------------------
|
||||
read(Transport, Len) when is_integer(Len) ->
|
||||
gen_server:call(Transport, {read, Len}).
|
||||
gen_server:call(Transport, {read, Len}, _Timeout=10000).
|
||||
|
||||
%%====================================================================
|
||||
%% gen_server callbacks
|
||||
|
@ -30,6 +30,9 @@ loop(State = #thrift_processor{in_protocol = IProto,
|
||||
type = ?tMessageType_CALL} ->
|
||||
ok = handle_function(State, list_to_atom(Function)),
|
||||
loop(State);
|
||||
{error, timeout} ->
|
||||
thrift_protocol:close_transport(OProto),
|
||||
ok;
|
||||
{error, closed} ->
|
||||
%% error_logger:info_msg("Client disconnected~n"),
|
||||
thrift_protocol:close_transport(OProto),
|
||||
|
@ -29,7 +29,13 @@ write(#data{socket = Socket}, Data) ->
|
||||
|
||||
read(#data{socket=Socket, recv_timeout=Timeout}, Len)
|
||||
when is_integer(Len), Len >= 0 ->
|
||||
gen_tcp:recv(Socket, Len, Timeout).
|
||||
case gen_tcp:recv(Socket, Len, Timeout) of
|
||||
Err = {error, timeout} ->
|
||||
error_logger:error_msg("read timeout for conn with ~p", [inet:peername(Socket)]),
|
||||
gen_tcp:close(Socket),
|
||||
Err;
|
||||
Data -> Data
|
||||
end.
|
||||
|
||||
%% We can't really flush - everything is flushed when we write
|
||||
flush(_) ->
|
||||
|
Loading…
Reference in New Issue
Block a user