[ 
https://issues.apache.org/jira/browse/IGNITE-29232?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Werner updated IGNITE-29232:
-----------------------------------
    Fix Version/s: 2.20

> Continuous query backup acknowledgement is sent to a single node only when it 
> covers several topology versions
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-29232
>                 URL: https://issues.apache.org/jira/browse/IGNITE-29232
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Dmitry Werner
>            Assignee: Dmitry Werner
>            Priority: Major
>             Fix For: 2.20
>
>
> CacheContinuousQueryHandler#sendBackupAcknowledge makes sure the same ack 
> goes to each node only once when the acknowledged entries span more than one 
> topology version. For that dedup, it adds the handler's nodeId field to 
> sentToNodes instead of node.id(). nodeId is the ID of the node that started 
> the routine:
> if (sentToNodes != null && !sentToNodes.add(nodeId))
>     continue;
> The first add succeeds and every later one fails. As a result, an ack 
> covering several topology versions reaches only the first remote affinity 
> node, and the other nodes never receive it.
> Consequences: on the backup nodes that miss the ack, the continuous query 
> backup queue (CacheContinuousQueryEventBuffer#backupQ) is not cleaned. The 
> entries stay in memory until a later ack with higher counters arrives for the 
> same partitions, or until the next exchange flushes the queue. If no further 
> updates arrive, they stay indefinitely. This happens whenever a topology 
> change (for example, a node join) occurs while acks are being accumulated.
> Fix: use node.id() for the dedup.



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

Reply via email to