You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ca...@apache.org on 2016/07/26 13:00:02 UTC
[3/6] cassandra git commit: Add option to override compaction space
check
Add option to override compaction space check
Patch by Sankalp Kohli; reviewed by Carl Yeksigian for CASSANDRA-12180
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0bb133e3
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0bb133e3
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0bb133e3
Branch: refs/heads/trunk
Commit: 0bb133e39d95486a897ff375f081cc814f78181b
Parents: 659be5f
Author: Carl Yeksigian <ca...@apache.org>
Authored: Tue Jul 26 08:49:56 2016 -0400
Committer: Carl Yeksigian <ca...@apache.org>
Committed: Tue Jul 26 08:49:56 2016 -0400
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/config/Config.java | 1 +
.../org/apache/cassandra/config/DatabaseDescriptor.java | 5 +++++
src/java/org/apache/cassandra/db/ColumnFamilyStore.java | 12 ++++++++++++
.../org/apache/cassandra/db/ColumnFamilyStoreMBean.java | 10 ++++++++++
src/java/org/apache/cassandra/db/Directories.java | 3 ++-
.../apache/cassandra/db/compaction/CompactionTask.java | 6 ++++++
7 files changed, 37 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0bb133e3/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index e9f41fb..342382e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.9
+ * Add option to override compaction space check (CASSANDRA-12180)
* Faster startup by only scanning each directory for temporary files once (CASSANDRA-12114)
* Respond with v1/v2 protocol header when responding to driver that attempts
to connect with too low of a protocol version (CASSANDRA-11464)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0bb133e3/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 2bd23b5..e6c56cb 100644
--- a/src/java/org/apache/cassandra/config/Config.java
+++ b/src/java/org/apache/cassandra/config/Config.java
@@ -171,6 +171,7 @@ public class Config
public Integer concurrent_compactors;
public volatile Integer compaction_throughput_mb_per_sec = 16;
public volatile Integer compaction_large_partition_warning_threshold_mb = 100;
+ public Integer min_free_space_per_drive_in_mb = 50;
public Integer max_streaming_retries = 3;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0bb133e3/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 b71ebf6..f0ec5d0 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -1209,6 +1209,11 @@ public class DatabaseDescriptor
public static int getCompactionLargePartitionWarningThreshold() { return conf.compaction_large_partition_warning_threshold_mb * 1024 * 1024; }
+ public static long getMinFreeSpacePerDriveInBytes()
+ {
+ return conf.min_free_space_per_drive_in_mb * 1024L * 1024L;
+ }
+
public static boolean getDisableSTCSInL0()
{
return Boolean.getBoolean("cassandra.disable_stcs_in_l0");
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0bb133e3/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index f34a2d5..1e52b13 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -222,6 +222,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
public volatile long sampleLatencyNanos;
private final ScheduledFuture<?> latencyCalculator;
+ private volatile boolean compactionSpaceCheck = true;
+
public static void shutdownPostFlushExecutor() throws InterruptedException
{
postFlushExecutor.shutdown();
@@ -1597,6 +1599,16 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
samplerResults.cardinality, result});
}
+ public boolean isCompactionDiskSpaceCheckEnabled()
+ {
+ return compactionSpaceCheck;
+ }
+
+ public void compactionDiskSpaceCheck(boolean enable)
+ {
+ compactionSpaceCheck = enable;
+ }
+
public void cleanupCache()
{
Collection<Range<Token>> ranges = StorageService.instance.getLocalRanges(keyspace.getName());
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0bb133e3/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java b/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
index c900442..a74316e 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java
@@ -161,4 +161,14 @@ public interface ColumnFamilyStoreMBean
* @return top <i>count</i> items for the sampler since beginLocalSampling was called
*/
public CompositeData finishLocalSampling(String sampler, int count) throws OpenDataException;
+
+ /*
+ Is Compaction space check enabled
+ */
+ public boolean isCompactionDiskSpaceCheckEnabled();
+
+ /*
+ Enable/Disable compaction space check
+ */
+ public void compactionDiskSpaceCheck(boolean enable);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0bb133e3/src/java/org/apache/cassandra/db/Directories.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Directories.java b/src/java/org/apache/cassandra/db/Directories.java
index f7bb390..01ffd52 100644
--- a/src/java/org/apache/cassandra/db/Directories.java
+++ b/src/java/org/apache/cassandra/db/Directories.java
@@ -516,7 +516,8 @@ public class Directories
public long getAvailableSpace()
{
- return location.getUsableSpace();
+ long availableSpace = location.getUsableSpace() - DatabaseDescriptor.getMinFreeSpacePerDriveInBytes();
+ return availableSpace > 0 ? availableSpace : 0;
}
@Override
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0bb133e3/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionTask.java b/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
index be81c80..9a7aa98 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionTask.java
@@ -268,6 +268,12 @@ public class CompactionTask extends AbstractCompactionTask
protected void checkAvailableDiskSpace(long estimatedSSTables, long expectedWriteSize)
{
+ if(!cfs.isCompactionDiskSpaceCheckEnabled() && compactionType == OperationType.COMPACTION)
+ {
+ logger.info("Compaction space check is disabled");
+ return;
+ }
+
while (!getDirectories().hasAvailableDiskSpace(estimatedSSTables, expectedWriteSize))
{
if (!reduceScopeForLimitedSpace())