Reza Taroosheh created IGNITE-29227:
---------------------------------------

             Summary: ContinuousQueryWithTransformer on an ATOMIC cache holds a 
partition's events if the transformer's result class is not registered on the 
primary node
                 Key: IGNITE-29227
                 URL: https://issues.apache.org/jira/browse/IGNITE-29227
             Project: Ignite
          Issue Type: Bug
            Reporter: Reza Taroosheh
            Assignee: Reza Taroosheh


On an {{ATOMIC}} cache, a {{ContinuousQueryWithTransformer}} whose remote 
transformer returns a user class that the key's primary node has not used yet 
stops delivering that partition's events to a listener on another node. The 
first such update is never delivered, and every later event of the same 
partition is held back. Nothing is logged. On a {{TRANSACTIONAL}} cache all 
events arrive.

Steps:
# Start two server nodes with a {{PARTITIONED}}, {{ATOMIC}} cache with 1 backup.
# On node 0, register a {{ContinuousQueryWithTransformer}} whose remote 
transformer returns an object of a user class (e.g., {{PersonId}}) not used in 
the cluster before.
# Put a key whose primary is node 1 three times.

Actual: the listener receives nothing.
Expected: three events.

Registering the result class on the key's primary node before the first update, 
with {{ignite.binary().toBinary(...)}} on node 1, avoids the problem. 
Registering it on node 0 alone does not.

According to the reporter, the held events are released only after 
{{IGNITE_CONTINUOUS_QUERY_LISTENER_MAX_BUFFER_SIZE}} (10 000) events are 
pending, and when several nodes register the same query, some listeners get the 
first event twice.

Reproduced on 2.17.0 and 2.18.0 (reported on the dev list: 
https://lists.apache.org/thread/x08d7cx1lz08gp9f1k6ldkl1xpvfjz6l), and on 
master by a new test.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to