Galen O'Sullivan created GEODE-5314:
---------------------------------------

             Summary: MBeanStatsMonitor child classes should use atomics 
instead of volatiles to avoid data race
                 Key: GEODE-5314
                 URL: https://issues.apache.org/jira/browse/GEODE-5314
             Project: Geode
          Issue Type: Bug
          Components: statistics
            Reporter: Galen O'Sullivan


{{GcStatsMonitor}} has the following:
{code}
  private volatile long collections = 0;
  private volatile long collectionTime = 0;
{code}
<snip>
{code}
    collections -= 
statsMap.getOrDefault(StatsKey.VM_GC_STATS_COLLECTIONS,0).intValue();
    collectionTime -= 
statsMap.getOrDefault(StatsKey.VM_GC_STATS_COLLECTION_TIME,0).intValue();
{code}

Because these are volatile and not atomic fields, there will be a race 
condition. Other subclasses of {{MBeanStatsMonitor}} also use volatiles: 
AggregateRegionStatsMonitor, GatewaySenderOverflowMonitor, 
MemberLevelDiskMonitor, VMStatsMonitor.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to