[
https://issues.apache.org/jira/browse/THRIFT-1805?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15047344#comment-15047344
]
Christopher Tubbs commented on THRIFT-1805:
-------------------------------------------
I'm not sure it's a matter of just improving through patches/testing/QA fixes.
I think it's also a matter of PMC direction to determine some guidelines on
behavior for the code, so it doesn't regress every time somebody has a new use
case. Patches can be evaluated against those guidelines.
In this case, for example, there was a regression introduced, which had
occurred and been fixed before (THRIFT-1658). Examining the code, there appears
to have been a conscious decision at one point to create two classes of
exceptions, yet the regression overruled this prior decision. That shouldn't
have happened if that decision had been encapsulated into some guidelines for
expected behavior.
In other cases, regressions have flip-flopped (THRIFT-2173 and related) several
times, each time the patch being accepted without much question, even though it
reversed a prior decision.
In addition to patches/testing/QA, I think the Thrift PMC could help this
situation by making some decisions for the project going forward, to increase
stability. Some such things:
1. Adopt Semantic Versioning with a well-defined public API which addresses
libraries, the IDL, and generated code.
2. Adopt a policy for maintaining on-the-wire compatibility in terms of the
versioning scheme chosen.
3. When a change in behavior causes problems and a decision must be made,
document the behavior which was decided upon (even if it's just a comment in
the code), so that future patches do not reverse prior decisions, without some
degree of oversight.
These aren't foolproof, but some guidelines for the direction of the project
could help contributors make higher quality contributions.
> 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.3.4#6332)