[
https://issues.apache.org/jira/browse/THRIFT-1805?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14043430#comment-14043430
]
Ben Craig commented on THRIFT-1805:
-----------------------------------
Adding an exception to a class doesn't break the wire format, but it probably
doesn't do what you want either. Exceptions in the .thrift file are treated
similarly to optional members of a struct. It will get serialized across, but
if the receiver isn't expecting it, the receiver will discard it.
As to Christopher's problem, I can see reasonable arguments for either behavior
(close socket on error vs. send TApplicationException on error). My general
preference is to close the socket on errors, but maybe it would make sense to
provide a constructor arg or codegen flag to let people choose.
> Thrift should not swallow ALL exceptions
> ----------------------------------------
>
> Key: THRIFT-1805
> URL: https://issues.apache.org/jira/browse/THRIFT-1805
> Project: Thrift
> Issue Type: Bug
> Components: Java - Compiler, Java - Library
> Affects Versions: 0.9
> Reporter: Diwaker Gupta
> Assignee: Diwaker Gupta
> Attachments: THRIFT-1805.patch
>
>
> In Thrift 0.8.0, Thrift generated Java code did not swallow application
> exceptions. As a result of THRIFT-1658, this behavior changed in 0.9.0 and
> now the generated code swallows ALL application exceptions (via
> ProcessFunction). Apparently this was the behavior in Thrift 0.6.0 and while
> I see the rationale, it is breaking our applications.
> Our code relies on the fact that exceptions can propagate outside of Thrift
> for certain things (e.g., to aggressively drop connections for clients that
> send invalid/malformed requests). ProcessFunction makes it near impossible to
> do this -- not only does it swallow the exception, it also loses all
> information about the original exception and just writes out a generic
> TApplicationException.
> IMO ProcessFunction should only catch TException. If the application code
> wants to use other exceptions for some reason (in particular, Errors and
> RuntimeExceptions), Thrift shouldn't prevent that.
--
This message was sent by Atlassian JIRA
(v6.2#6252)