You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by he...@apache.org on 2019/02/22 20:56:22 UTC

[geode] branch release/1.9.0 updated: GEODE-6440: synchronize when getting and setting (#3220)

This is an automated email from the ASF dual-hosted git repository.

heybales pushed a commit to branch release/1.9.0
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/release/1.9.0 by this push:
     new acf39ac  GEODE-6440: synchronize when getting and setting (#3220)
acf39ac is described below

commit acf39ac301197a7be5df1b27ddf0a60aa6fc876d
Author: Helena Bales <hb...@pivotal.io>
AuthorDate: Fri Feb 22 10:14:30 2019 -0800

    GEODE-6440: synchronize when getting and setting (#3220)
    
    Synchronize on getting and setting stats to avoid a race condition that
    could occur when multiple threads were trying to set gauge stats.
    
    Signed-off-by: Jacob Barrett <jb...@pivotal.io>
    (cherry picked from commit ca41a5c32a317bbff672d76c4038f731746d6ffb)
---
 .../internal/statistics/StripedStatisticsImpl.java | 30 +++++++++++++++-------
 1 file changed, 21 insertions(+), 9 deletions(-)

diff --git a/geode-core/src/main/java/org/apache/geode/internal/statistics/StripedStatisticsImpl.java b/geode-core/src/main/java/org/apache/geode/internal/statistics/StripedStatisticsImpl.java
index 3dc6e92..1fcd90d 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/statistics/StripedStatisticsImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/statistics/StripedStatisticsImpl.java
@@ -54,35 +54,47 @@ public class StripedStatisticsImpl extends StatisticsImpl {
 
   @Override
   protected void _setInt(int offset, int value) {
-    intAdders[offset].reset();
-    intAdders[offset].add(value);
+    synchronized (intAdders[offset]) {
+      intAdders[offset].reset();
+      intAdders[offset].add(value);
+    }
   }
 
   @Override
   protected void _setLong(int offset, long value) {
-    longAdders[offset].reset();
-    longAdders[offset].add(value);
+    synchronized (longAdders[offset]) {
+      longAdders[offset].reset();
+      longAdders[offset].add(value);
+    }
   }
 
   @Override
   protected void _setDouble(int offset, double value) {
-    doubleAdders[offset].reset();
-    doubleAdders[offset].add(value);
+    synchronized (doubleAdders[offset]) {
+      doubleAdders[offset].reset();
+      doubleAdders[offset].add(value);
+    }
   }
 
   @Override
   protected int _getInt(int offset) {
-    return intAdders[offset].intValue();
+    synchronized (intAdders[offset]) {
+      return intAdders[offset].intValue();
+    }
   }
 
   @Override
   protected long _getLong(int offset) {
-    return longAdders[offset].sum();
+    synchronized (longAdders[offset]) {
+      return longAdders[offset].sum();
+    }
   }
 
   @Override
   protected double _getDouble(int offset) {
-    return doubleAdders[offset].sum();
+    synchronized (doubleAdders[offset]) {
+      return doubleAdders[offset].sum();
+    }
   }
 
   @Override