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]
