[ https://issues.apache.org/jira/browse/THRIFT-785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12901109#action_12901109 ]
Anthony Molinaro commented on THRIFT-785: ----------------------------------------- I came across the same issue yesterday in a slightly different guise. I'm using the refactored code from THRIFT-599. The good news is the python client returns correctly and the server does not die. The bad news it still spews an error =CRASH REPORT==== 21-Aug-2010::04:20:36 === crasher: initial call: thrift_socket_server:acceptor_loop/1 pid: <0.45.0> registered_name: [] exception error: no match of right hand side value {{transport,thrift_socket_transport, {data,#Port<0.647>,3600000}}, {error,closed}} in function thrift_framed_transport:read/2 in call from thrift_transport:read/2 in call from thrift_binary_protocol:read_data/2 in call from thrift_binary_protocol:read/2 in call from thrift_binary_protocol:read/2 in call from thrift_protocol:read_specific/2 in call from thrift_processor:loop/1 ancestors: [test_server,<0.42.0>] messages: [] links: [<0.44.0>,#Port<0.647>] dictionary: [] trap_exit: false status: running heap_size: 610 stack_size: 24 reductions: 604 neighbours: =ERROR REPORT==== 21-Aug-2010::04:20:36 === {thrift_socket_server,244, {child_error, {badmatch, {{transport,thrift_socket_transport,{data,#Port<0.647>,3600000}}, {error,closed}}}, []}} Looking through the framed_transport it looks like it will currently crash in this way every time the client closes a connection. The problem is in the read/2 call lines 73-80. The current call has been finished and a read happens for the next call. Unfortunately the client has disconnected so the thrift_transport:read call on line 76 returns {error, closed}. It looks like either of those read calls could result in a connection close. So I'll try to put together a patch which passes the error outward since that's what really should happen. > Framed transport server problems > -------------------------------- > > Key: THRIFT-785 > URL: https://issues.apache.org/jira/browse/THRIFT-785 > Project: Thrift > Issue Type: Bug > Components: Erlang - Library > Affects Versions: 0.4 > Reporter: Manish Singh > Attachments: erlframedtest.erl, erlframedtest.thrift > > > If I try to call the erlang thirift service associated with the attached > files in framed mode from python, it dies with: > $ gen-py/erlframedtest/FramedTest-remote -h localhost:9999 -f hi > =ERROR REPORT==== 19-May-2010::15:09:20 === > ** Generic server <0.41.0> terminating > ** Last message in was {read,4} > ** When Server state == {framed_transport, > {transport,thrift_socket_transport, > {data,#Port<0.847>,500}}, > <<>>,[]} > ** Reason for termination == > ** {{badmatch,{error,closed}}, > [{thrift_framed_transport,handle_call,3}, > {gen_server,handle_msg,5}, > {proc_lib,init_p_do_apply,3}]} > =ERROR REPORT==== 19-May-2010::15:09:20 === > {thrift_socket_server,245, > {child_error,{{badmatch,{error,closed}}, > [{thrift_framed_transport,handle_call,3}, > {gen_server,handle_msg,5}, > {proc_lib,init_p_do_apply,3}]}, > []}} > This is with erlang R13B04. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.