[ 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)