GitHub user joshelser opened a pull request:
https://github.com/apache/accumulo/pull/56
ACCUMULO-4065 Work around TExceptions being written back to clients iâ¦
â¦n oneway methods.
In talking to @keith-turner on the previous pull request, we came to the
conclusion that the real issue was that when a TException is thrown on by the
(server-side) Processor on a oneway method, a message is written back to the
client. This message is left on the wire, and will mess up other calls which
expect their message to be on the wire (this was what the first pull request
realized and tried to work around).
I noticed that RpcWrapper is actually rethrowing RTEs and Errors as
TExceptions, in an attempt to work around some change in logic from 0.6.0 and
0.9.0. Since clients will never know that an Exception was thrown as a result
of some invocation of a oneway Thrift call, we want to avoid wrapping and
rethrowing any RTE/Error in the oneway call's path.
These changes alter RpcWrapper so that it does not wrap and rethrow RTEs
and Errors when thrown from a oneway method invocation.
I verified that the patch works with some logging (thus removed), as well
as hacking together a call to TabletClientService.fastHalt and verifying that
no data is sent back to the client.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/joshelser/accumulo
ACCUMULO-4065-oneway-exceptions
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/accumulo/pull/56.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #56
----
commit 9cd4796acb013855f5ed0c87726a09f6be5436f5
Author: Josh Elser <[email protected]>
Date: 2015-12-01T03:23:33Z
ACCUMULO-4065 Work around TExceptions being written back to clients in
oneway methods.
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---