When a `FunctionStreamingResultCollector` is processing (reply) messages for a 
transactional operation, it sometimes encounters a message that is a generic 
`ReplyMessage`, not a `FunctionStreamingReplyMessage`. This happens when the 
(remote) message processor (`PartitionMessage.process()`) attempts to perform 
the operation, but finds that the transaction is already closed. `process()` 
replies with a generic `ReplyMessage` in that case, resulting in a 
`ClassCastException` over in the `FunctionStreamingResultCollector`.

The solution, here, is to reply with a `TransactionException` from `process()` 
in this case.

This PR consists of two commits: one for the bug just described, and another 
(tiny one) that got the breadcrumbs facility working again. The latter was 
helpful in debugging the IPC.
### For all changes:
- [x] Is there a JIRA ticket associated with this PR? Is it referenced in the 
commit message?

- [x] Has your PR been rebased against the latest commit within the target 
branch (typically `develop`)?

- [ ] Is your initial contribution a single, squashed commit?

- [x] Does `gradlew build` run cleanly?

- [ ] Have you written or updated unit tests to verify your changes?

- [ ] If adding new dependencies to the code, are these dependencies licensed 
in a way that is compatible for inclusion under [ASF 
2.0](http://www.apache.org/legal/resolved.html#category-a)?

### Note:
Please ensure that once the PR is submitted, you check travis-ci for build 
issues and
submit an update to your PR as soon as possible. If you need help, please send 
an
email to [email protected].


[ Full content available at: https://github.com/apache/geode/pull/3131 ]
This message was relayed via gitbox.apache.org for 
[email protected]

Reply via email to