You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Mikhail Petrov <pm...@gmail.com> on 2020/04/13 06:33:12 UTC

Registration CQ on client nodes.

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.


Re: Registration CQ on client nodes.

Posted by Mikhail Petrov <pm...@gmail.com>.
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 <pm...@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.
>>
>>

Re: Registration CQ on client nodes.

Posted by Alexey Goncharuk <al...@gmail.com>.
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 <pm...@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.
>
>