[ 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