This is an automated email from the ASF dual-hosted git repository. dmagda pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push: new bb5dbe3 Ignite docs: added the note about continuous queries exactly-once guarantee. new 9e18e07 Merge remote-tracking branch 'origin/master' bb5dbe3 is described below commit bb5dbe3c4a951bddd17f2ab9094ddd69b1779cee Author: Denis Magda <dma...@gridgain.com> AuthorDate: Tue Oct 6 16:02:56 2020 -0700 Ignite docs: added the note about continuous queries exactly-once guarantee. --- docs/_docs/key-value-api/continuous-queries.adoc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/_docs/key-value-api/continuous-queries.adoc b/docs/_docs/key-value-api/continuous-queries.adoc index 8f90dbdb..73343d3 100644 --- a/docs/_docs/key-value-api/continuous-queries.adoc +++ b/docs/_docs/key-value-api/continuous-queries.adoc @@ -136,6 +136,21 @@ You can do this in two ways: * link:code-deployment/peer-class-loading[Enable peer class loading]. ==== +== Events Delivery Guarantees + +Continuous queries ensure the exactly-once semantic for the delivery of events to the clients' local listeners. + +Both primary and backup nodes maintain an update queue that holds events that are processed by continuous queries +on the server side but yet to be delivered to the clients. Suppose a primary node crashes +or the cluster topology changes for any reason. In that case, every backup node flushes the content of its update +queue to the client, making sure that every event is delivered to the client's local listener. + +Ignite manages a special per-partition update counter that helps to avoid duplicate notifications. Once an entry in +some partition is updated, a counter for this partition is incremented on both primary and backup nodes. The value of +this counter is also sent along with the event notification to the client. Thus, the client can skip already-processed +events. Once the client confirms that an event is received, the primary and backup nodes remove the record for this event +from their backup queues. + == Examples