[
https://issues.apache.org/jira/browse/IGNITE-29226?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18136318#comment-18136318
]
Maksim Timonin commented on IGNITE-29226:
-----------------------------------------
[~rezataroosheh] Hi! I'm not a right person to review this.
Last who change the file in this place are [~nizhikov] and [~PetrovMikhail] .
Guys, could you please check this issue?
> ContinuousQueryWithTransformer on a keep-binary cache delivers a remote
> node's transformed events as BinaryObject
> -----------------------------------------------------------------------------------------------------------------
>
> Key: IGNITE-29226
> URL: https://issues.apache.org/jira/browse/IGNITE-29226
> Project: Ignite
> Issue Type: Bug
> Reporter: Reza Taroosheh
> Assignee: Reza Taroosheh
> Priority: Major
> Fix For: 2.20
>
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> A {{ContinuousQueryWithTransformer}} registered on {{cache.withKeepBinary()}}
> gives its local listener the transformer's result class only for keys whose
> primary is the listener's node. Events transformed on another node arrive as
> {{BinaryObject}}, so one listener gets a mix of both, and a listener that
> reads its events as the result class throws {{ClassCastException}}. Without
> {{withKeepBinary()}}, every event arrives as the result class.
> Steps:
> # Start two server nodes with a {{PARTITIONED}} cache.
> # On node 0, register a {{ContinuousQueryWithTransformer}} on
> {{cache.withKeepBinary()}}, with a remote transformer that returns an object
> of a user class (e.g., {{PersonId}}, built from the event's key or value).
> # Put one key whose primary is node 0 and one whose primary is node 1.
> Actual: the listener gets a {{PersonId}} for the first key and a
> {{BinaryObjectImpl}} for the second.
> Expected: a {{PersonId}} for both. Keep-binary mode controls how the
> transformer receives the cache's keys and values; it should not change the
> transformer's result type.
> Reproduced on 2.17.0 and 2.18.0 (reported on the dev list:
> https://lists.apache.org/thread/hrr9s73y6v0f853qdt63rb6dh1hjhn3t), and on
> master by a new test.
> The existing keep-binary tests in
> {{CacheContinuousWithTransformerReplicatedSelfTest}} don't catch it: they run
> on a single server node and transform to a {{String}}.
> Compatibility: the fix changes the type a listener receives for remote events
> on a keep-binary cache. Code that handles {{BinaryObject}} there would get
> the result class instead.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)