You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Galen O'Sullivan (JIRA)" <ji...@apache.org> on 2018/09/18 23:04:00 UTC

[jira] [Commented] (GEODE-5314) MBeanStatsMonitor child classes should use atomics instead of volatiles to avoid data race

    [ https://issues.apache.org/jira/browse/GEODE-5314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16619849#comment-16619849 ] 

Galen O'Sullivan commented on GEODE-5314:
-----------------------------------------

Per discussion in the PR, it looks like there is a single Statistics thread, which means that this is not creating a data race as I had thought.

> 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
>            Assignee: Juan José Ramos Cassella
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 6h 20m
>  Remaining Estimate: 0h
>
> {{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)