thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Reiss <dre...@facebook.com>
Subject Re: Function clause on "oneway_void" [Thrift-Erlang]
Date Mon, 06 Sep 2010 22:47:48 GMT
Are you using a very old version of the runtime library?
The current version of thrift_processor:handle_success checks
the ReplyType and won't call send_reply if it is oneway_void.

--David

On 09/06/2010 04:36 AM, Roberto Aloi wrote:
> Sure:
> 
> =ERROR REPORT==== 6-Sep-2010::12:34:41 ===
> oneway void feedback_fragment threw error which must be ignored: {error,
>                                                                   function_clause,
>                                                                   [{thrift_protocol,
>                                                                     term_to_typeid,
>                                                                     [oneway_void]},
>                                                                    {thrift_protocol,
>                                                                     struct_write_loop,
>                                                                     3},
>                                                                    {thrift_protocol,
>                                                                     write,2},
>                                                                    {thrift_processor,
>                                                                     send_reply,
>                                                                     4},
>                                                                    {thrift_processor,
>                                                                     handle_function,
>                                                                     2},
>                                                                    {thrift_processor,
>                                                                     loop,1}]}
> 
> 
> Roberto Aloi
> @prof3ta
> http://aloiroberto.wordpress.com
> 
> ----- "David Reiss" <dreiss@facebook.com> wrote:
> 
>> Can you include the full stack trace?
>>
>> On 09/02/2010 10:41 AM, Roberto Aloi wrote:
>>> Hi all,
>>>
>>> I'm using a "oneway" modifier in one my Thrift function
>> definitions:
>>>
>>> ...
>>> oneway void secret_function(1: string x, 2: string y),
>>> ...
>>>
>>> When generating the respective Erlang code via Thrift, this is
>> translated into:
>>>
>>> ...
>>> function_info('secret_function', reply_type) ->
>>>   oneway_void;
>>> function_info('secret_function', exceptions) ->
>>>   {struct, []};
>>> ...
>>>
>>> Please note the "oneway_void" atom there.
>>>
>>> When the "secret_function" function is executed, I get the following
>> error:
>>>
>>> =ERROR REPORT==== 2-Sep-2010::18:17:08 ===
>>> oneway void secret_function threw error which must be ignored:
>> {error,
>>>                                                                  
>> function_clause,
>>>                                                                  
>> [{thrift_protocol,
>>>                                                                    
>> term_to_typeid,
>>>                                                                    
>> [oneway_void]}, ...
>>>
>>> Independently from the possible bugs contained in the user code,
>> here the thrift_protocol:term_to_typeid/1 function is being called
>> with the oneway_void atom as an argument, which causes a function
>> clause. In fact, reading from the code (thrift_protocol.erl):
>>>
>>> ...
>>> term_to_typeid(void) -> ?tType_VOID;
>>> term_to_typeid(bool) -> ?tType_BOOL;
>>> term_to_typeid(byte) -> ?tType_BYTE;
>>> term_to_typeid(double) -> ?tType_DOUBLE;
>>> term_to_typeid(i16) -> ?tType_I16;
>>> term_to_typeid(i32) -> ?tType_I32;
>>> term_to_typeid(i64) -> ?tType_I64;
>>> term_to_typeid(string) -> ?tType_STRING;
>>> term_to_typeid({struct, _}) -> ?tType_STRUCT;
>>> term_to_typeid({map, _, _}) -> ?tType_MAP;
>>> term_to_typeid({set, _}) -> ?tType_SET;
>>> term_to_typeid({list, _}) -> ?tType_LIST.
>>> ...
>>>
>>> A bug? Any other explanation? Why is "oneway_void" being passed to
>> that function?
>>>
>>> Regards,
>>>
>>> Roberto Aloi
> 

Mime
View raw message