ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Denis Magda (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-2604) CacheContinuousQueryBatchAck is sent to nodes that doesn't hold cache data
Date Tue, 09 Feb 2016 21:40:18 GMT
Denis Magda created IGNITE-2604:

             Summary: CacheContinuousQueryBatchAck is sent to nodes that doesn't hold cache
                 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
             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
    for (AffinityTopologyVersion topVer : t.get2())

The list has to be formed by remote nodes that contain only a particular cache

for (AffinityTopologyVersion topVer : t.get2())
nodes.addAll(ctx.discovery().remoteCacheNodes(cctx.name(), topVer));

and finally the ack has to be sent only if a node is not a client node

for (ClusterNode node : nodes) {
                        if (!node.isClient()) {
                            try {
                                cctx.io().send(node, msg, GridIoPolicy.SYSTEM_POOL);

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

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]]

This message was sent by Atlassian JIRA

View raw message