You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2012/08/23 18:01:36 UTC

git commit: Make jmx setters consistent with yaml config. Patch by Chris Merrill, reviewed by brandonwilliams for CASSANDRA-4479

Updated Branches:
  refs/heads/trunk 8bd1c1f86 -> 3925aba84


Make jmx setters consistent with yaml config.
Patch by Chris Merrill, reviewed by brandonwilliams for CASSANDRA-4479


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3925aba8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3925aba8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3925aba8

Branch: refs/heads/trunk
Commit: 3925aba84260063618bf85db6d51b409116f4050
Parents: 8bd1c1f
Author: Brandon Williams <br...@apache.org>
Authored: Thu Aug 23 10:58:54 2012 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Thu Aug 23 10:58:54 2012 -0500

----------------------------------------------------------------------
 src/java/org/apache/cassandra/config/Config.java   |   24 ++++++++------
 .../cassandra/config/DatabaseDescriptor.java       |   25 ++++++++++++++
 .../org/apache/cassandra/gms/FailureDetector.java  |   10 ++---
 .../org/apache/cassandra/service/CacheService.java |   26 ++++++---------
 .../org/apache/cassandra/service/StorageProxy.java |   14 +++----
 5 files changed, 59 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3925aba8/src/java/org/apache/cassandra/config/Config.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java
index 8da9777..8488d08 100644
--- a/src/java/org/apache/cassandra/config/Config.java
+++ b/src/java/org/apache/cassandra/config/Config.java
@@ -19,7 +19,11 @@ package org.apache.cassandra.config;
 
 import org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider;
 
-
+/**
+ * A class that contains configuration properties for the cassandra node it runs within.
+ * 
+ * Properties declared as volatile can be mutated via JMX.
+ */
 public class Config
 {
     public String cluster_name = "Test Cluster";
@@ -30,8 +34,8 @@ public class Config
     public String partitioner;
 
     public Boolean auto_bootstrap = true;
-    public Boolean hinted_handoff_enabled = true;
-    public Integer max_hint_window_in_ms = Integer.MAX_VALUE;
+    public volatile Boolean hinted_handoff_enabled = true;
+    public volatile Integer max_hint_window_in_ms = Integer.MAX_VALUE;
 
     public SeedProviderDef seed_provider;
     public DiskAccessMode disk_access_mode = DiskAccessMode.auto;
@@ -40,7 +44,7 @@ public class Config
     public String initial_token;
     public Integer num_tokens = 1;
 
-    public Long rpc_timeout_in_ms = new Long(10000);
+    public volatile Long rpc_timeout_in_ms = new Long(10000);
 
     public Long read_rpc_timeout_in_ms = new Long(10000);
 
@@ -52,7 +56,7 @@ public class Config
 
     public Integer streaming_socket_timeout_in_ms = new Integer(0);
 
-    public Double phi_convict_threshold = 8.0;
+    public volatile Double phi_convict_threshold = 8.0;
 
     public Integer concurrent_reads = 8;
     public Integer concurrent_writes = 32;
@@ -90,12 +94,12 @@ public class Config
     public Integer column_index_size_in_kb = 64;
     public Integer in_memory_compaction_limit_in_mb = 256;
     public Integer concurrent_compactors = Runtime.getRuntime().availableProcessors();
-    public Integer compaction_throughput_mb_per_sec = 16;
+    public volatile Integer compaction_throughput_mb_per_sec = 16;
     public Boolean multithreaded_compaction = false;
 
     public Integer max_streaming_retries = 3;
 
-    public Integer stream_throughput_outbound_megabits_per_sec;
+    public volatile Integer stream_throughput_outbound_megabits_per_sec;
 
     public String[] data_file_directories;
 
@@ -132,17 +136,17 @@ public class Config
     public int max_hints_delivery_threads = 1;
     public boolean compaction_preheat_key_cache = true;
 
-    public boolean incremental_backups = false;
+    public volatile boolean incremental_backups = false;
     public int memtable_flush_queue_size = 4;
     public boolean trickle_fsync = false;
     public int trickle_fsync_interval_in_kb = 10240;
 
     public Long key_cache_size_in_mb = null;
-    public int key_cache_save_period = 14400;
+    public volatile int key_cache_save_period = 14400;
     public int key_cache_keys_to_save = Integer.MAX_VALUE;
 
     public long row_cache_size_in_mb = 0;
-    public int row_cache_save_period = 0;
+    public volatile int row_cache_save_period = 0;
     public int row_cache_keys_to_save = Integer.MAX_VALUE;
     public String row_cache_provider = ConcurrentLinkedHashCacheProvider.class.getSimpleName();
     public boolean populate_io_cache_on_flush = false;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3925aba8/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index 796ba64..dce43c9 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -804,6 +804,11 @@ public class DatabaseDescriptor
         return conf.phi_convict_threshold;
     }
 
+    public static void setPhiConvictThreshold(double phiConvictThreshold)
+    {
+        conf.phi_convict_threshold = phiConvictThreshold;
+    }
+
     public static int getConcurrentReaders()
     {
         return conf.concurrent_reads;
@@ -1005,11 +1010,21 @@ public class DatabaseDescriptor
         return conf.auto_bootstrap;
     }
 
+    public static void setHintedHandoffEnabled(boolean hintedHandoffEnabled)
+    {
+        conf.hinted_handoff_enabled = hintedHandoffEnabled;
+    }
+
     public static boolean hintedHandoffEnabled()
     {
         return conf.hinted_handoff_enabled;
     }
 
+    public static void setMaxHintWindow(int ms)
+    {
+        conf.max_hint_window_in_ms = ms;
+    }
+
     public static int getMaxHintWindow()
     {
         return conf.max_hint_window_in_ms;
@@ -1149,6 +1164,11 @@ public class DatabaseDescriptor
         return conf.key_cache_save_period;
     }
 
+    public static void setKeyCacheSavePeriod(int keyCacheSavePeriod)
+    {
+        conf.key_cache_save_period = keyCacheSavePeriod;
+    }
+
     public static int getKeyCacheKeysToSave()
     {
         return conf.key_cache_keys_to_save;
@@ -1164,6 +1184,11 @@ public class DatabaseDescriptor
         return conf.row_cache_save_period;
     }
 
+    public static void setRowCacheSavePeriod(int rowCacheSavePeriod)
+    {
+        conf.row_cache_save_period = rowCacheSavePeriod;
+    }
+
     public static int getRowCacheKeysToSave()
     {
         return conf.row_cache_keys_to_save;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3925aba8/src/java/org/apache/cassandra/gms/FailureDetector.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/FailureDetector.java b/src/java/org/apache/cassandra/gms/FailureDetector.java
index 952328b..c58a559 100644
--- a/src/java/org/apache/cassandra/gms/FailureDetector.java
+++ b/src/java/org/apache/cassandra/gms/FailureDetector.java
@@ -48,14 +48,12 @@ public class FailureDetector implements IFailureDetector, FailureDetectorMBean
 
     public static final IFailureDetector instance = new FailureDetector();
     private static final Logger logger = LoggerFactory.getLogger(FailureDetector.class);
-    private static double phiConvictThreshold;
 
     private final Map<InetAddress, ArrivalWindow> arrivalSamples = new Hashtable<InetAddress, ArrivalWindow>();
     private final List<IFailureDetectionEventListener> fdEvntListeners = new CopyOnWriteArrayList<IFailureDetectionEventListener>();
 
     public FailureDetector()
     {
-        phiConvictThreshold = DatabaseDescriptor.getPhiConvictThreshold();
         // Register this instance with JMX
         try
         {
@@ -131,12 +129,12 @@ public class FailureDetector implements IFailureDetector, FailureDetectorMBean
 
     public void setPhiConvictThreshold(double phi)
     {
-        phiConvictThreshold = phi;
+        DatabaseDescriptor.setPhiConvictThreshold(phi);
     }
 
     public double getPhiConvictThreshold()
     {
-        return phiConvictThreshold;
+        return DatabaseDescriptor.getPhiConvictThreshold();
     }
 
     public boolean isAlive(InetAddress ep)
@@ -186,7 +184,7 @@ public class FailureDetector implements IFailureDetector, FailureDetectorMBean
         if (logger.isTraceEnabled())
             logger.trace("PHI for " + ep + " : " + phi);
 
-        if ( phi > phiConvictThreshold )
+        if (phi > getPhiConvictThreshold())
         {
             logger.trace("notifying listeners that {} is down", ep);
             logger.trace("intervals: {} mean: {}", hbWnd, hbWnd.mean());
@@ -202,7 +200,7 @@ public class FailureDetector implements IFailureDetector, FailureDetectorMBean
         logger.debug("Forcing conviction of {}", ep);
         for (IFailureDetectionEventListener listener : fdEvntListeners)
         {
-            listener.convict(ep, phiConvictThreshold);
+            listener.convict(ep, getPhiConvictThreshold());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3925aba8/src/java/org/apache/cassandra/service/CacheService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CacheService.java b/src/java/org/apache/cassandra/service/CacheService.java
index 58600ef..8446b8d 100644
--- a/src/java/org/apache/cassandra/service/CacheService.java
+++ b/src/java/org/apache/cassandra/service/CacheService.java
@@ -83,9 +83,6 @@ public class CacheService implements CacheServiceMBean
     public final AutoSavingCache<KeyCacheKey, RowIndexEntry> keyCache;
     public final AutoSavingCache<RowCacheKey, IRowCacheEntry> rowCache;
 
-    private int rowCacheSavePeriod;
-    private int keyCacheSavePeriod;
-
     private CacheService()
     {
         MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
@@ -99,9 +96,6 @@ public class CacheService implements CacheServiceMBean
             throw new RuntimeException(e);
         }
 
-        rowCacheSavePeriod = DatabaseDescriptor.getRowCacheSavePeriod();
-        keyCacheSavePeriod = DatabaseDescriptor.getKeyCacheSavePeriod();
-
         keyCache = initKeyCache();
         rowCache = initRowCache();
     }
@@ -142,10 +136,10 @@ public class CacheService implements CacheServiceMBean
         int keyCacheKeysToSave = DatabaseDescriptor.getKeyCacheKeysToSave();
 
         logger.info("Scheduling key cache save to each {} seconds (going to save {} keys).",
-                    keyCacheSavePeriod,
+                DatabaseDescriptor.getKeyCacheSavePeriod(),
                     keyCacheKeysToSave == Integer.MAX_VALUE ? "all" : keyCacheKeysToSave);
 
-        keyCache.scheduleSaving(keyCacheSavePeriod, keyCacheKeysToSave);
+        keyCache.scheduleSaving(DatabaseDescriptor.getKeyCacheSavePeriod(), keyCacheKeysToSave);
 
         return keyCache;
     }
@@ -168,10 +162,10 @@ public class CacheService implements CacheServiceMBean
         int rowCacheKeysToSave = DatabaseDescriptor.getRowCacheKeysToSave();
 
         logger.info("Scheduling row cache save to each {} seconds (going to save {} keys).",
-                    rowCacheSavePeriod,
+                DatabaseDescriptor.getRowCacheSavePeriod(),
                     rowCacheKeysToSave == Integer.MAX_VALUE ? "all" : rowCacheKeysToSave);
 
-        rowCache.scheduleSaving(rowCacheSavePeriod, rowCacheKeysToSave);
+        rowCache.scheduleSaving(DatabaseDescriptor.getRowCacheSavePeriod(), rowCacheKeysToSave);
 
         return rowCache;
     }
@@ -208,7 +202,7 @@ public class CacheService implements CacheServiceMBean
 
     public int getRowCacheSavePeriodInSeconds()
     {
-        return rowCacheSavePeriod;
+        return DatabaseDescriptor.getRowCacheSavePeriod();
     }
 
     public void setRowCacheSavePeriodInSeconds(int rcspis)
@@ -216,13 +210,13 @@ public class CacheService implements CacheServiceMBean
         if (rcspis < 0)
             throw new RuntimeException("RowCacheSavePeriodInSeconds must be non-negative.");
 
-        rowCacheSavePeriod = rcspis;
-        rowCache.scheduleSaving(rowCacheSavePeriod, DatabaseDescriptor.getRowCacheKeysToSave());
+        DatabaseDescriptor.setRowCacheSavePeriod(rcspis);
+        rowCache.scheduleSaving(rcspis, DatabaseDescriptor.getRowCacheKeysToSave());
     }
 
     public int getKeyCacheSavePeriodInSeconds()
     {
-        return keyCacheSavePeriod;
+        return DatabaseDescriptor.getKeyCacheSavePeriod();
     }
 
     public void setKeyCacheSavePeriodInSeconds(int kcspis)
@@ -230,8 +224,8 @@ public class CacheService implements CacheServiceMBean
         if (kcspis < 0)
             throw new RuntimeException("KeyCacheSavePeriodInSeconds must be non-negative.");
 
-        keyCacheSavePeriod = kcspis;
-        keyCache.scheduleSaving(keyCacheSavePeriod, DatabaseDescriptor.getKeyCacheKeysToSave());
+        DatabaseDescriptor.setKeyCacheSavePeriod(kcspis);
+        keyCache.scheduleSaving(kcspis, DatabaseDescriptor.getKeyCacheKeysToSave());
     }
 
     public void invalidateKeyCache()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3925aba8/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index 1fb84cd..f308405 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -78,8 +78,6 @@ public class StorageProxy implements StorageProxyMBean
 
     public static final StorageProxy instance = new StorageProxy();
 
-    private static volatile boolean hintedHandoffEnabled = DatabaseDescriptor.hintedHandoffEnabled();
-    private static volatile int maxHintWindow = DatabaseDescriptor.getMaxHintWindow();
     private static volatile int maxHintsInProgress = 1024 * Runtime.getRuntime().availableProcessors();
     private static final AtomicInteger totalHintsInProgress = new AtomicInteger();
     private static final Map<InetAddress, AtomicInteger> hintsInProgress = new MapMaker().concurrencyLevel(1).makeComputingMap(new Function<InetAddress, AtomicInteger>()
@@ -1161,30 +1159,30 @@ public class StorageProxy implements StorageProxyMBean
 
     public boolean getHintedHandoffEnabled()
     {
-        return hintedHandoffEnabled;
+        return DatabaseDescriptor.hintedHandoffEnabled();
     }
 
     public void setHintedHandoffEnabled(boolean b)
     {
-        hintedHandoffEnabled = b;
+        DatabaseDescriptor.setHintedHandoffEnabled(b);
     }
 
     public int getMaxHintWindow()
     {
-        return maxHintWindow;
+        return DatabaseDescriptor.getMaxHintWindow();
     }
 
     public void setMaxHintWindow(int ms)
     {
-        maxHintWindow = ms;
+        DatabaseDescriptor.setMaxHintWindow(ms);
     }
 
     public static boolean shouldHint(InetAddress ep)
     {
-        if (!hintedHandoffEnabled)
+        if (!DatabaseDescriptor.hintedHandoffEnabled())
             return false;
 
-        boolean hintWindowExpired = Gossiper.instance.getEndpointDowntime(ep) > maxHintWindow;
+        boolean hintWindowExpired = Gossiper.instance.getEndpointDowntime(ep) > DatabaseDescriptor.getMaxHintWindow();
         if (hintWindowExpired)
             logger.debug("not hinting {} which has been down {}ms", ep, Gossiper.instance.getEndpointDowntime(ep));
         return !hintWindowExpired;