You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2016/01/22 16:26:38 UTC
[03/10] cassandra git commit: Make changes to compaction throughput
be applied in real time
Make changes to compaction throughput be applied in real time
patch by soumava; reviewed by kohlisankalp for CASSANDRA-10025
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dd2006b0
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dd2006b0
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dd2006b0
Branch: refs/heads/cassandra-3.3
Commit: dd2006b0c1053e9b536ac5ec66f38646d764cb6f
Parents: 3aaae7a
Author: Soumava Ghosh <so...@utexas.edu>
Authored: Fri Jan 22 16:19:50 2016 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Fri Jan 22 16:19:50 2016 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../db/compaction/CompactionManager.java | 25 +++++++++++++-------
.../cassandra/service/StorageService.java | 1 +
3 files changed, 19 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dd2006b0/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 37a0137..dcaccfc 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.2.5
+ * Apply change to compaction throughput in real time (CASSANDRA-10025)
* Fix potential NPE on ORDER BY queries with IN (CASSANDRA-10955)
* Avoid over-fetching during the page of range queries (CASSANDRA-8521)
* Start L0 STCS-compactions even if there is a L0 -> L1 compaction
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dd2006b0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index ae2b6fb..c51ed7d 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -114,24 +114,33 @@ public class CompactionManager implements CompactionManagerMBean
private final RateLimiter compactionRateLimiter = RateLimiter.create(Double.MAX_VALUE);
/**
- * Gets compaction rate limiter. When compaction_throughput_mb_per_sec is 0 or node is bootstrapping,
- * this returns rate limiter with the rate of Double.MAX_VALUE bytes per second.
+ * Gets compaction rate limiter.
* Rate unit is bytes per sec.
*
* @return RateLimiter with rate limit set
*/
public RateLimiter getRateLimiter()
{
- double currentThroughput = DatabaseDescriptor.getCompactionThroughputMbPerSec() * 1024.0 * 1024.0;
- // if throughput is set to 0, throttling is disabled
- if (currentThroughput == 0 || StorageService.instance.isBootstrapMode())
- currentThroughput = Double.MAX_VALUE;
- if (compactionRateLimiter.getRate() != currentThroughput)
- compactionRateLimiter.setRate(currentThroughput);
+ setRate(DatabaseDescriptor.getCompactionThroughputMbPerSec());
return compactionRateLimiter;
}
/**
+ * Sets the rate for the rate limiter. When compaction_throughput_mb_per_sec is 0 or node is bootstrapping,
+ * this sets the rate to Double.MAX_VALUE bytes per second.
+ * @param throughPutMbPerSec throughput to set in mb per second
+ */
+ public void setRate(final double throughPutMbPerSec)
+ {
+ double throughput = throughPutMbPerSec * 1024.0 * 1024.0;
+ // if throughput is set to 0, throttling is disabled
+ if (throughput == 0 || StorageService.instance.isBootstrapMode())
+ throughput = Double.MAX_VALUE;
+ if (compactionRateLimiter.getRate() != throughput)
+ compactionRateLimiter.setRate(throughput);
+ }
+
+ /**
* Call this whenever a compaction might be needed on the given columnfamily.
* It's okay to over-call (within reason) if a call is unnecessary, it will
* turn into a no-op in the bucketing/candidate-scan phase.
http://git-wip-us.apache.org/repos/asf/cassandra/blob/dd2006b0/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 34419e9..09c20e9 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -1158,6 +1158,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
public void setCompactionThroughputMbPerSec(int value)
{
DatabaseDescriptor.setCompactionThroughputMbPerSec(value);
+ CompactionManager.instance.setRate(value);
}
public boolean isIncrementalBackupsEnabled()