You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Juan José Ramos Cassella (JIRA)" <ji...@apache.org> on 2018/09/24 08:25:00 UTC
[jira] [Resolved] (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:all-tabpanel ]
Juan José Ramos Cassella resolved GEODE-5314.
---------------------------------------------
Resolution: Fixed
Fix Version/s: 1.8.0
Changes merged into develop through [be52507b73e46cf1b8578b23c4ea41ee40afc625|https://github.com/apache/geode/commit/be52507b73e46cf1b8578b23c4ea41ee40afc625].
> 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
> Fix For: 1.8.0
>
> Time Spent: 7h
> 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)