You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by "Roman Koriakov (Jira)" <ji...@apache.org> on 2019/12/13 13:11:00 UTC

[jira] [Created] (IGNITE-12445) When Cache Metrics are switched on (statisticsEnabled = true) the empty cache events arrive to the client nodes

Roman Koriakov created IGNITE-12445:
---------------------------------------

             Summary: When Cache Metrics are switched on (statisticsEnabled = true) the empty cache events arrive to the client nodes 
                 Key: IGNITE-12445
                 URL: https://issues.apache.org/jira/browse/IGNITE-12445
             Project: Ignite
          Issue Type: Bug
          Components: general
    Affects Versions: 2.7.6
         Environment: OS Name Microsoft Windows 10 Pro
 java version "1.8.0_231"
 java version OpenJDK 64-Bit Server VM 11+28
            Reporter: Roman Koriakov


If we want to react on some PUT or READ cache operations first of all we need to turn on the appropriate cache events on the server node and catch those events on the client nodes using remote approach with two listeners. It works well until we switch on *statisticsEnabled* on the server node, it will lead to the situation when we get empty *CacheEvent* objects.

The example that demonstrates this issue is in the attachments. This example is consists of three nodes:  1 server node with cache and 2 clients.  One client is filling the cache and the second one is listening PUT operations. When we turn on Cache Metrics on the server node: *cacheConfig.setStatisticsEnabled(true);* in *EventServerCache.java* we get empty events ({color:#172b4d}Sometimes {color}CacheEvent objects with null fields. Sometimes there are no events at all)

My suppose is there is some Exception in GridCacheEventManager.addEvent() when Cache Metrics is turned on. 

{color:#cc7832}catch {color}(Exception e) {
   {color:#cc7832}if {color}(!{color:#9876aa}cctx{color}.cacheObjectContext().kernalContext().cacheObjects().isBinaryEnabled({color:#9876aa}cctx{color}.config()))
     {color:#cc7832}throw {color}e{color:#cc7832};{color}{color:#cc7832}  if {color}({color:#9876aa}log{color}.isDebugEnabled())
      {color:#9876aa}log{color}.debug({color:#6a8759}"Failed to unmarshall cache object value for the event notification: " {color}+ e){color:#cc7832};{color}{color:#cc7832}  {color}

{color:#cc7832}  if {color}(!{color:#9876aa}forceKeepBinary{color})
     LT.warn({color:#9876aa}log{color}{color:#cc7832}, {color}{color:#6a8759}"Failed to unmarshall cache object value for the event notification " {color}+
              {color:#6a8759}"(all further notifications will keep binary object format)."{color}){color:#cc7832};{color} 

{color:#9876aa}  forceKeepBinary {color}= {color:#cc7832}true;{color} 

  key0 = {color:#9876aa}cctx{color}.cacheObjectContext().unwrapBinaryIfNeeded(key{color:#cc7832}, true, false{color}){color:#cc7832};{color} 

  val0 = {color:#9876aa}cctx{color}.cacheObjectContext().unwrapBinaryIfNeeded(newVal{color:#cc7832}, true, false{color}){color:#cc7832};{color} 

  oldVal0 = {color:#9876aa}cctx{color}.cacheObjectContext().unwrapBinaryIfNeeded(oldVal{color:#cc7832}, true, false{color}){color:#cc7832};{color}

}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)