[ 
https://issues.apache.org/jira/browse/IGNITE-2604?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Denis Magda updated IGNITE-2604:
--------------------------------
    Priority: Blocker  (was: Major)

> CacheContinuousQueryBatchAck is sent to nodes that doesn't hold cache data
> --------------------------------------------------------------------------
>
>                 Key: IGNITE-2604
>                 URL: https://issues.apache.org/jira/browse/IGNITE-2604
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 1.5.0.final
>            Reporter: Denis Magda
>            Assignee: Nikolay Tikhonov
>            Priority: Blocker
>             Fix For: 1.6
>
>
> Presently {{CacheContinuousQueryBatchAck}} is sent to every node of the 
> cluster including client nodes but in fact it has to be sent to backup nodes 
> only. The reason is that the list of the backups is retrieved with 
> {{ctx.discovery().cacheNodes(topVer)}} method which returns all the nodes 
> where at least one cache is registered.
> Refer to {{CacheContinuousQueryHandler.sendBackupAcknowledge}} method body
> {noformat}
>     for (AffinityTopologyVersion topVer : t.get2())
>         nodes.addAll(ctx.discovery().cacheNodes(topVer));
> {noformat}
> The list has to be formed by remote nodes that contain only a particular cache
> {noformat}
> for (AffinityTopologyVersion topVer : t.get2())
> nodes.addAll(ctx.discovery().remoteCacheNodes(cctx.name(), topVer));
> {noformat}
> and finally the ack has to be sent only if a node is not a client node
> {noformat}
> for (ClusterNode node : nodes) {
>                         if (!node.isClient()) {
>                             try {
>                                 cctx.io().send(node, msg, 
> GridIoPolicy.SYSTEM_POOL);
> {noformat}
> Next, in my understanding there is no need to register 
> CacheContinuousQueryBatchAck handler on the client side. Presently it's 
> registered in {{CacheContinuousQueryManager.start0}} method.
> Finally, since currently the ack is sent to clients as well the following 
> warning floods logs in some unclear cases
> {noformat}
> 20160208 12:56:30.301 WARN [sys-#7%null%] 
> org.apache.ignite.internal.processors.cache.GridCacheIoManager [] - Received 
> message without registered handler (will ignore) 
> [msg=CacheContinuousQueryBatchAck 
> [routineId=df328a9f-6a63-40f7-8a1b-923cfadb6337, updateCntrs={193=1455, 
> 898=1434, 581=307, 584=159, 75=376, 331=233, 652=434, 13=420, 910=923, 
> 143=249, 147=619, 150=1185, 598=338, 728=1168, 90=598, 346=1169, 283=214, 
> 934=388, 615=310, 807=140, 1002=1132, 555=344, 365=215, 941=342, 946=515, 
> 1015=635, 56=614, 378=1130, 827=720, 956=5675}], 
> nodeId=d78ac9e5-60dd-4fa9-a8eb-7c5c36e189af, 
> locTopVer=AffinityTopologyVersion [topVer=248, minorTopVer=1], 
> msgTopVer=AffinityTopologyVersion [topVer=-1, minorTopVer=0], 
> cacheDesc=DynamicCacheDescriptor 
> [deploymentId=b8776e0c251-eb7db0e0-c35f-4a05-af44-5295c4cfdc01, locCfg=false, 
> staticCfg=true, started=true, cacheType=USER, template=false, 
> pluginMgr=GridCacheManagerAdapter [starting=false], updatesAllowed=true, 
> startTopVer=null, rcvdOnDiscovery=true, cacheName=GETS_ORDER_MAP]]
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to