[
https://issues.apache.org/jira/browse/IGNITE-29232?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dmitry Werner updated IGNITE-29232:
-----------------------------------
Priority: Minor (was: Major)
> 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: Minor
> 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)