Alexey,

Thanks for clarification. I think that is all I wanted to know.

Thank you.

On 13.04.2020 11:43, Alexey Goncharuk wrote:
Mikhail,

I think you've answered your first question in your second question. The
CQ handler on client nodes does not make sense because there is no data on
client nodes that can be notified of, therefore there is no reason to fail
the CQ as it does not affect the execution in any way.

As for the message being sent to clients - if I remember correctly, there
were no mechanics to filter out discovery messages to exclude clients.
Perhaps, such a mechanics can be introduced to the SPI to resolve
this issue.

пн, 13 апр. 2020 г. в 09:33, Mikhail Petrov <pmgheap....@gmail.com>:

Hello, Igniters.

I recently noticed that if the client node failed to register the CQ
handler during CQ start, the start of CQ succeeds despite this.

In this case, the error message appears in the client log. It can be
something like this:

[2020-04-13
09:20:48,315][ERROR][disco-notifier-worker-#84%continuous.ContinuousQueryRemoteFilterMissingInClassPathSelfTest2%][GridContinuousProcessor]

Failed to register handler [nodeId=aa8e3541-0b93-40f7-8310-3f3a7e600001,
routineId=6fb6f0e9-4c30-46d2-9cf2-1765e0b3c9be]
class org.apache.ignite.IgniteCheckedException:

org.apache.ignite.tests.p2p.CacheDeploymentCacheEntryEventSerializableFilter
      at

org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.processStartRequest(GridContinuousProcessor.java:1385)
      at

org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.access$400(GridContinuousProcessor.java:117)
      at

org.apache.ignite.internal.processors.continuous.GridContinuousProcessor$2.onCustomEvent(GridContinuousProcessor.java:220)
      at

org.apache.ignite.internal.processors.continuous.GridContinuousProcessor$2.onCustomEvent(GridContinuousProcessor.java:211)
      at

org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.onDiscovery0(GridDiscoveryManager.java:670)
      at

org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$4.lambda$onDiscovery$0(GridDiscoveryManager.java:533)
      at

org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body0(GridDiscoveryManager.java:2635)
      at

org.apache.ignite.internal.managers.discovery.GridDiscoveryManager$DiscoveryMessageNotifierWorker.body(GridDiscoveryManager.java:2673)
      at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
      at java.lang.Thread.run(Thread.java:748)

The test [1] demonstrates this behavior as valid.


Can someone please clarify why this behavior is considered valid?

Moreover, are there any reasons for sending the CQ registration message
to client nodes given that there is no data on them?

I'll appreciate any thoughts.


[1] -

https://github.com/apache/ignite/blob/master/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/ContinuousQueryRemoteFilterMissingInClassPathSelfTest.java#L223

Regards,
Mikhail.


Reply via email to