[ 
https://issues.apache.org/jira/browse/THRIFT-1243?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

alexandre parenteau updated THRIFT-1243:
----------------------------------------

    Attachment: THRIFT-1243-2.patch

Included is a patch on 0.8 that adds more error handling to the libevent based 
server.

It also fixes 2 minor bugs (handle failure of evhttp_bind_socket and prevent 
exceptions to reach libevent in TEvhttpClientChannel::response).

As far as I can tell, the question of @diwaker is still valid, there is no good 
way currently to have the callback of TEvhttpClientChannel::finish, to be 
passed the exact failure. However I don't think returning a bool helps, because 
libevent is the one asynchronously calling, so the error will have to be 
handled by the client *within* the callback.

This callback will invariably throw a TTransportException::END_OF_FILE, when a 
disconnect or a 404 happens.

I added to this patch the ability to log such failures to stderr, but it would 
take more changes (compiler?) to actually pass the error to the client, so that 
a call will throw the correct error (and *not* EOF).

Finally I removed all abort calls, trying to replace them by appropriate 
exceptions instead.

Thanks!

> TAsyncChannel callbacks
> -----------------------
>
>                 Key: THRIFT-1243
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1243
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C++ - Library
>    Affects Versions: 0.7
>         Environment: Visual C++ 2010
>            Reporter: alexandre parenteau
>            Assignee: alexandre parenteau
>            Priority: Minor
>              Labels: patch
>             Fix For: 0.8
>
>         Attachments: THRIFT-1243-2.patch, THRIFT-1243.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> [Context: This patch is part of a larger patch to use thriftnb on 
> Windows/VisualC++. See 
> https://github.com/aubonbeurre/thrift/blob/alex-0.7.0/README.non.blocking.Windows
>  for more details.]
> When compiling using Visual C++ 2010, the compiler chokes on casting some 
> callbacks bool(*)() to void(*)().
> Although probably valid and supported by gcc, this is further complicated by 
> the fact those casting seem unnecessary: for each of the callbacks returning 
> bool in TAsyncChannel.h:
> 1. the returned value is never checked
> 2. they always return true
> Attached is a trivial patch based on 0.7.0, tested on Ubuntu 11.04 and Visual 
> C++ 2010.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to