[
https://issues.apache.org/jira/browse/IGNITE-2604?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nikolay Tikhonov closed IGNITE-2604.
------------------------------------
> 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)