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