Igniters,

I noticed, that local continuous queries store queues with backup entries.
And since the queries are local, other nodes never send acknowledges.

It has two negative effects:
1) Backup queue may grow indefinitely and cause OOME.
2) When topology changes, the backup queue is flushed, and old
notifications are delivered to the listener, even if they happened long
time ago.

I prepared a fix for it. You can find it in the ticket: IGNITE-9009
<https://issues.apache.org/jira/browse/IGNITE-9009>
It makes local continuous queries ignore backup entries and not put them
into the backup queues.

Nikolay, Semyon,
You are the people, who implemented this piece of functionality.
Could you review these changes and share your opinion?

I can think of another way to fix it: we could register
*CacheContinuousQueryHandlers* on all nodes even for a local CQ, and make
them send backup notifications to the subscriber node.
It will help in cases, when you create local listeners on all nodes and
want all nodes to process changes, that happen on their primary partitions.
In this case backup entries may help not to lose updates. But actually it
will leave a time window between sending a backup acknowledge and notifying
the local listener. And such use-case will generate quadratic number of
handlers and pollute the network communication.

So, I prefer the first option.

What do you think?

Denis

Reply via email to