You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mc...@apache.org on 2018/05/04 05:21:28 UTC
[1/6] cassandra git commit: fix viewbuilder progress and display in
compactionstats
Repository: cassandra
Updated Branches:
refs/heads/cassandra-3.0 15c463cb0 -> 9d498dced
refs/heads/cassandra-3.11 dd9ae1d3e -> bc30a6f73
refs/heads/trunk 645d8278b -> 78ca3447c
fix viewbuilder progress and display in compactionstats
patch by Zhao Yang (jasonstack); reviewed by Mick Semb Wever for CASSANDRA-12244
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9d498dce
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9d498dce
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9d498dce
Branch: refs/heads/cassandra-3.0
Commit: 9d498dced6cea77b027b8a74bf4ae9201c8afdf5
Parents: 15c463c
Author: Mick Semb Wever <mc...@apache.org>
Authored: Wed May 2 14:21:40 2018 +1000
Committer: Mick Semb Wever <mc...@apache.org>
Committed: Fri May 4 14:46:25 2018 +1000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/cache/AutoSavingCache.java | 3 +-
.../cassandra/db/compaction/CompactionInfo.java | 33 +++++++++++++++++---
.../apache/cassandra/db/view/ViewBuilder.java | 19 ++++++-----
.../io/sstable/IndexSummaryRedistribution.java | 5 +--
.../tools/nodetool/CompactionStats.java | 7 +++--
6 files changed, 48 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index e549cda..f1dcf52 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.17
+ * Fix progress stats and units in compactionstats (CASSANDRA-12244)
* Better handle missing partition columns in system_schema.columns (CASSANDRA-14379)
* Delay hints store excise by write timeout to avoid race with decommission (CASSANDRA-13740)
* Deprecate background repair and probablistic read_repair_chance table options
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/cache/AutoSavingCache.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
index e39dcf1..00431b9 100644
--- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java
+++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
@@ -42,6 +42,7 @@ import org.apache.cassandra.db.SystemKeyspace;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.FSWriteError;
import org.apache.cassandra.io.util.*;
import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException;
@@ -304,7 +305,7 @@ public class AutoSavingCache<K extends CacheKey, V> extends InstrumentingCache<K
type,
0,
keysEstimate,
- "keys",
+ Unit.KEYS,
UUIDGen.getTimeUUID());
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
index 3cd8737..404c07f 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
@@ -34,20 +34,43 @@ public final class CompactionInfo implements Serializable
private final OperationType tasktype;
private final long completed;
private final long total;
- private final String unit;
+ private final Unit unit;
private final UUID compactionId;
+ public static enum Unit
+ {
+ BYTES("bytes"), RANGES("ranges"), KEYS("keys");
+
+ private final String name;
+
+ private Unit(String name)
+ {
+ this.name = name;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name;
+ }
+
+ public static boolean isFileSize(String unit)
+ {
+ return BYTES.toString().equals(unit);
+ }
+ }
+
public CompactionInfo(CFMetaData cfm, OperationType tasktype, long bytesComplete, long totalBytes, UUID compactionId)
{
- this(cfm, tasktype, bytesComplete, totalBytes, "bytes", compactionId);
+ this(cfm, tasktype, bytesComplete, totalBytes, Unit.BYTES, compactionId);
}
- public CompactionInfo(OperationType tasktype, long completed, long total, String unit, UUID compactionId)
+ public CompactionInfo(OperationType tasktype, long completed, long total, Unit unit, UUID compactionId)
{
this(null, tasktype, completed, total, unit, compactionId);
}
- public CompactionInfo(CFMetaData cfm, OperationType tasktype, long completed, long total, String unit, UUID compactionId)
+ public CompactionInfo(CFMetaData cfm, OperationType tasktype, long completed, long total, Unit unit, UUID compactionId)
{
this.tasktype = tasktype;
this.completed = completed;
@@ -129,7 +152,7 @@ public final class CompactionInfo implements Serializable
ret.put("completed", Long.toString(completed));
ret.put("total", Long.toString(total));
ret.put("taskType", tasktype.toString());
- ret.put("unit", unit);
+ ret.put("unit", unit.toString());
ret.put("compactionId", compactionId == null ? "" : compactionId.toString());
return ret;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/db/view/ViewBuilder.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/view/ViewBuilder.java b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
index 94314fd..68cb265 100644
--- a/src/java/org/apache/cassandra/db/view/ViewBuilder.java
+++ b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
@@ -25,18 +25,21 @@ import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
+
import javax.annotation.Nullable;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.cassandra.concurrent.ScheduledExecutors;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.db.lifecycle.SSTableSet;
import org.apache.cassandra.db.partitions.*;
import org.apache.cassandra.db.rows.*;
@@ -187,7 +190,7 @@ public class ViewBuilder extends CompactionInfo.Holder
public CompactionInfo getCompactionInfo()
{
- long rangesLeft = 0, rangesTotal = 0;
+ long rangesCompleted = 0, rangesTotal = 0;
Token lastToken = prevToken;
// This approximation is not very accurate, but since we do not have a method which allows us to calculate the
@@ -197,15 +200,11 @@ public class ViewBuilder extends CompactionInfo.Holder
// has.
for (Range<Token> range : StorageService.instance.getLocalRanges(baseCfs.keyspace.getName()))
{
- rangesLeft++;
rangesTotal++;
- // This will reset rangesLeft, so that the number of ranges left will be less than the total ranges at the
- // end of the method.
- if (lastToken == null || range.contains(lastToken))
- rangesLeft = 0;
- }
-
- return new CompactionInfo(baseCfs.metadata, OperationType.VIEW_BUILD, rangesLeft, rangesTotal, "ranges", compactionId);
+ if ((lastToken != null) && lastToken.compareTo(range.right) > 0)
+ rangesCompleted++;
+ }
+ return new CompactionInfo(baseCfs.metadata, OperationType.VIEW_BUILD, rangesCompleted, rangesTotal, Unit.RANGES, compactionId);
}
public void stop()
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
index ebe98e5..ff362e8 100644
--- a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
+++ b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
@@ -30,14 +30,15 @@ import java.util.UUID;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionInterruptedException;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.db.lifecycle.LifecycleTransaction;
import org.apache.cassandra.io.sstable.format.SSTableReader;
import org.apache.cassandra.utils.Pair;
@@ -308,7 +309,7 @@ public class IndexSummaryRedistribution extends CompactionInfo.Holder
public CompactionInfo getCompactionInfo()
{
- return new CompactionInfo(OperationType.INDEX_SUMMARY, (memoryPoolBytes - remainingSpace), memoryPoolBytes, "bytes", compactionId);
+ return new CompactionInfo(OperationType.INDEX_SUMMARY, (memoryPoolBytes - remainingSpace), memoryPoolBytes, Unit.BYTES, compactionId);
}
/** Utility class for sorting sstables by their read rates. */
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java b/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
index bac23c2..36b5733 100644
--- a/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
@@ -26,8 +26,10 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManagerMBean;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.tools.NodeProbe;
import org.apache.cassandra.tools.NodeTool.NodeToolCmd;
@@ -61,9 +63,10 @@ public class CompactionStats extends NodeToolCmd
String taskType = c.get("taskType");
String keyspace = c.get("keyspace");
String columnFamily = c.get("columnfamily");
- String completedStr = humanReadable ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
- String totalStr = humanReadable ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String unit = c.get("unit");
+ boolean toFileSize = humanReadable && Unit.isFileSize(unit);
+ String completedStr = toFileSize ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
+ String totalStr = toFileSize ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String percentComplete = total == 0 ? "n/a" : new DecimalFormat("0.00").format((double) completed / total * 100) + "%";
String id = c.get("compactionId");
addLine(lines, columnSizes, id, taskType, keyspace, columnFamily, completedStr, totalStr, unit, percentComplete);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org
[2/6] cassandra git commit: fix viewbuilder progress and display in
compactionstats
Posted by mc...@apache.org.
fix viewbuilder progress and display in compactionstats
patch by Zhao Yang (jasonstack); reviewed by Mick Semb Wever for CASSANDRA-12244
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9d498dce
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9d498dce
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9d498dce
Branch: refs/heads/cassandra-3.11
Commit: 9d498dced6cea77b027b8a74bf4ae9201c8afdf5
Parents: 15c463c
Author: Mick Semb Wever <mc...@apache.org>
Authored: Wed May 2 14:21:40 2018 +1000
Committer: Mick Semb Wever <mc...@apache.org>
Committed: Fri May 4 14:46:25 2018 +1000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/cache/AutoSavingCache.java | 3 +-
.../cassandra/db/compaction/CompactionInfo.java | 33 +++++++++++++++++---
.../apache/cassandra/db/view/ViewBuilder.java | 19 ++++++-----
.../io/sstable/IndexSummaryRedistribution.java | 5 +--
.../tools/nodetool/CompactionStats.java | 7 +++--
6 files changed, 48 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index e549cda..f1dcf52 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.17
+ * Fix progress stats and units in compactionstats (CASSANDRA-12244)
* Better handle missing partition columns in system_schema.columns (CASSANDRA-14379)
* Delay hints store excise by write timeout to avoid race with decommission (CASSANDRA-13740)
* Deprecate background repair and probablistic read_repair_chance table options
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/cache/AutoSavingCache.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
index e39dcf1..00431b9 100644
--- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java
+++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
@@ -42,6 +42,7 @@ import org.apache.cassandra.db.SystemKeyspace;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.FSWriteError;
import org.apache.cassandra.io.util.*;
import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException;
@@ -304,7 +305,7 @@ public class AutoSavingCache<K extends CacheKey, V> extends InstrumentingCache<K
type,
0,
keysEstimate,
- "keys",
+ Unit.KEYS,
UUIDGen.getTimeUUID());
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
index 3cd8737..404c07f 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
@@ -34,20 +34,43 @@ public final class CompactionInfo implements Serializable
private final OperationType tasktype;
private final long completed;
private final long total;
- private final String unit;
+ private final Unit unit;
private final UUID compactionId;
+ public static enum Unit
+ {
+ BYTES("bytes"), RANGES("ranges"), KEYS("keys");
+
+ private final String name;
+
+ private Unit(String name)
+ {
+ this.name = name;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name;
+ }
+
+ public static boolean isFileSize(String unit)
+ {
+ return BYTES.toString().equals(unit);
+ }
+ }
+
public CompactionInfo(CFMetaData cfm, OperationType tasktype, long bytesComplete, long totalBytes, UUID compactionId)
{
- this(cfm, tasktype, bytesComplete, totalBytes, "bytes", compactionId);
+ this(cfm, tasktype, bytesComplete, totalBytes, Unit.BYTES, compactionId);
}
- public CompactionInfo(OperationType tasktype, long completed, long total, String unit, UUID compactionId)
+ public CompactionInfo(OperationType tasktype, long completed, long total, Unit unit, UUID compactionId)
{
this(null, tasktype, completed, total, unit, compactionId);
}
- public CompactionInfo(CFMetaData cfm, OperationType tasktype, long completed, long total, String unit, UUID compactionId)
+ public CompactionInfo(CFMetaData cfm, OperationType tasktype, long completed, long total, Unit unit, UUID compactionId)
{
this.tasktype = tasktype;
this.completed = completed;
@@ -129,7 +152,7 @@ public final class CompactionInfo implements Serializable
ret.put("completed", Long.toString(completed));
ret.put("total", Long.toString(total));
ret.put("taskType", tasktype.toString());
- ret.put("unit", unit);
+ ret.put("unit", unit.toString());
ret.put("compactionId", compactionId == null ? "" : compactionId.toString());
return ret;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/db/view/ViewBuilder.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/view/ViewBuilder.java b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
index 94314fd..68cb265 100644
--- a/src/java/org/apache/cassandra/db/view/ViewBuilder.java
+++ b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
@@ -25,18 +25,21 @@ import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
+
import javax.annotation.Nullable;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.cassandra.concurrent.ScheduledExecutors;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.db.lifecycle.SSTableSet;
import org.apache.cassandra.db.partitions.*;
import org.apache.cassandra.db.rows.*;
@@ -187,7 +190,7 @@ public class ViewBuilder extends CompactionInfo.Holder
public CompactionInfo getCompactionInfo()
{
- long rangesLeft = 0, rangesTotal = 0;
+ long rangesCompleted = 0, rangesTotal = 0;
Token lastToken = prevToken;
// This approximation is not very accurate, but since we do not have a method which allows us to calculate the
@@ -197,15 +200,11 @@ public class ViewBuilder extends CompactionInfo.Holder
// has.
for (Range<Token> range : StorageService.instance.getLocalRanges(baseCfs.keyspace.getName()))
{
- rangesLeft++;
rangesTotal++;
- // This will reset rangesLeft, so that the number of ranges left will be less than the total ranges at the
- // end of the method.
- if (lastToken == null || range.contains(lastToken))
- rangesLeft = 0;
- }
-
- return new CompactionInfo(baseCfs.metadata, OperationType.VIEW_BUILD, rangesLeft, rangesTotal, "ranges", compactionId);
+ if ((lastToken != null) && lastToken.compareTo(range.right) > 0)
+ rangesCompleted++;
+ }
+ return new CompactionInfo(baseCfs.metadata, OperationType.VIEW_BUILD, rangesCompleted, rangesTotal, Unit.RANGES, compactionId);
}
public void stop()
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
index ebe98e5..ff362e8 100644
--- a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
+++ b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
@@ -30,14 +30,15 @@ import java.util.UUID;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionInterruptedException;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.db.lifecycle.LifecycleTransaction;
import org.apache.cassandra.io.sstable.format.SSTableReader;
import org.apache.cassandra.utils.Pair;
@@ -308,7 +309,7 @@ public class IndexSummaryRedistribution extends CompactionInfo.Holder
public CompactionInfo getCompactionInfo()
{
- return new CompactionInfo(OperationType.INDEX_SUMMARY, (memoryPoolBytes - remainingSpace), memoryPoolBytes, "bytes", compactionId);
+ return new CompactionInfo(OperationType.INDEX_SUMMARY, (memoryPoolBytes - remainingSpace), memoryPoolBytes, Unit.BYTES, compactionId);
}
/** Utility class for sorting sstables by their read rates. */
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java b/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
index bac23c2..36b5733 100644
--- a/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
@@ -26,8 +26,10 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManagerMBean;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.tools.NodeProbe;
import org.apache.cassandra.tools.NodeTool.NodeToolCmd;
@@ -61,9 +63,10 @@ public class CompactionStats extends NodeToolCmd
String taskType = c.get("taskType");
String keyspace = c.get("keyspace");
String columnFamily = c.get("columnfamily");
- String completedStr = humanReadable ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
- String totalStr = humanReadable ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String unit = c.get("unit");
+ boolean toFileSize = humanReadable && Unit.isFileSize(unit);
+ String completedStr = toFileSize ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
+ String totalStr = toFileSize ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String percentComplete = total == 0 ? "n/a" : new DecimalFormat("0.00").format((double) completed / total * 100) + "%";
String id = c.get("compactionId");
addLine(lines, columnSizes, id, taskType, keyspace, columnFamily, completedStr, totalStr, unit, percentComplete);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org
[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into
cassandra-3.11
Posted by mc...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.11
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bc30a6f7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bc30a6f7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bc30a6f7
Branch: refs/heads/cassandra-3.11
Commit: bc30a6f733545205271a2cdf82cfa7ab42eee6f4
Parents: dd9ae1d 9d498dc
Author: Mick Semb Wever <mc...@apache.org>
Authored: Fri May 4 14:47:10 2018 +1000
Committer: Mick Semb Wever <mc...@apache.org>
Committed: Fri May 4 15:01:54 2018 +1000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/cache/AutoSavingCache.java | 3 +-
.../cassandra/db/compaction/CompactionInfo.java | 33 +++++++++++++++++---
.../apache/cassandra/db/view/ViewBuilder.java | 19 ++++++-----
.../io/sstable/IndexSummaryRedistribution.java | 5 +--
.../tools/nodetool/CompactionStats.java | 7 +++--
6 files changed, 48 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 2d7053d,f1dcf52..5f66b62
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,15 -1,5 +1,16 @@@
-3.0.17
+3.11.3
+ * Allow existing nodes to use all peers in shadow round (CASSANDRA-13851)
+ * Fix cqlsh to read connection.ssl cqlshrc option again (CASSANDRA-14299)
+ * Downgrade log level to trace for CommitLogSegmentManager (CASSANDRA-14370)
+ * CQL fromJson(null) throws NullPointerException (CASSANDRA-13891)
+ * Serialize empty buffer as empty string for json output format (CASSANDRA-14245)
+ * Allow logging implementation to be interchanged for embedded testing (CASSANDRA-13396)
+ * SASI tokenizer for simple delimiter based entries (CASSANDRA-14247)
+ * Fix Loss of digits when doing CAST from varint/bigint to decimal (CASSANDRA-14170)
+ * RateBasedBackPressure unnecessarily invokes a lock on the Guava RateLimiter (CASSANDRA-14163)
+ * Fix wildcard GROUP BY queries (CASSANDRA-14209)
+Merged from 3.0:
+ * Fix progress stats and units in compactionstats (CASSANDRA-12244)
* Better handle missing partition columns in system_schema.columns (CASSANDRA-14379)
* Delay hints store excise by write timeout to avoid race with decommission (CASSANDRA-13740)
* Deprecate background repair and probablistic read_repair_chance table options
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/cache/AutoSavingCache.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cache/AutoSavingCache.java
index aa13ca3,00431b9..a40a8a9
--- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java
+++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
@@@ -42,9 -41,11 +42,10 @@@ import org.apache.cassandra.db.ColumnFa
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.FSWriteError;
import org.apache.cassandra.io.util.*;
-import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException;
+import org.apache.cassandra.io.util.CorruptFileException;
import org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus;
import org.apache.cassandra.service.CacheService;
import org.apache.cassandra.utils.JVMStabilityInspector;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/db/view/ViewBuilder.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/view/ViewBuilder.java
index 8e647ea,68cb265..d9c9e71
--- a/src/java/org/apache/cassandra/db/view/ViewBuilder.java
+++ b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
@@@ -190,25 -188,9 +193,25 @@@ public class ViewBuilder extends Compac
}
}
+ private void updateDistributed(String ksname, String viewName, UUID localHostId)
+ {
+ try
+ {
+ SystemDistributedKeyspace.successfulViewBuild(ksname, viewName, localHostId);
+ SystemKeyspace.setViewBuiltReplicated(ksname, viewName);
+ }
+ catch (Exception e)
+ {
+ ScheduledExecutors.nonPeriodicTasks.schedule(() -> CompactionManager.instance.submitViewBuilder(this),
+ 5,
+ TimeUnit.MINUTES);
+ logger.warn("Failed to updated the distributed status of view, sleeping 5 minutes before retrying", e);
+ }
+ }
+
public CompactionInfo getCompactionInfo()
{
- long rangesLeft = 0, rangesTotal = 0;
+ long rangesCompleted = 0, rangesTotal = 0;
Token lastToken = prevToken;
// This approximation is not very accurate, but since we do not have a method which allows us to calculate the
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
index 73626d3,ff362e8..ab23ef3
--- a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
+++ b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
@@@ -38,9 -38,9 +38,10 @@@ import org.apache.cassandra.db.Keyspace
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionInterruptedException;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.db.lifecycle.LifecycleTransaction;
import org.apache.cassandra.io.sstable.format.SSTableReader;
+import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.Pair;
import org.apache.cassandra.utils.concurrent.Refs;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
index 4fd0423,36b5733..d615516
--- a/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
@@@ -17,16 -17,19 +17,18 @@@
*/
package org.apache.cassandra.tools.nodetool;
-import static java.lang.String.format;
-import io.airlift.command.Command;
-import io.airlift.command.Option;
-
import java.text.DecimalFormat;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
+
+import io.airlift.command.Command;
+import io.airlift.command.Option;
+ import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManagerMBean;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.tools.NodeProbe;
import org.apache.cassandra.tools.NodeTool.NodeToolCmd;
@@@ -85,12 -63,13 +87,13 @@@ public class CompactionStats extends No
String taskType = c.get("taskType");
String keyspace = c.get("keyspace");
String columnFamily = c.get("columnfamily");
- String completedStr = humanReadable ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
- String totalStr = humanReadable ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String unit = c.get("unit");
+ boolean toFileSize = humanReadable && Unit.isFileSize(unit);
+ String completedStr = toFileSize ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
+ String totalStr = toFileSize ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String percentComplete = total == 0 ? "n/a" : new DecimalFormat("0.00").format((double) completed / total * 100) + "%";
String id = c.get("compactionId");
- addLine(lines, columnSizes, id, taskType, keyspace, columnFamily, completedStr, totalStr, unit, percentComplete);
+ table.add(id, taskType, keyspace, columnFamily, completedStr, totalStr, unit, percentComplete);
if (taskType.equals(OperationType.COMPACTION.toString()))
remainingBytes += total - completed;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org
[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into
cassandra-3.11
Posted by mc...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.11
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bc30a6f7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bc30a6f7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bc30a6f7
Branch: refs/heads/trunk
Commit: bc30a6f733545205271a2cdf82cfa7ab42eee6f4
Parents: dd9ae1d 9d498dc
Author: Mick Semb Wever <mc...@apache.org>
Authored: Fri May 4 14:47:10 2018 +1000
Committer: Mick Semb Wever <mc...@apache.org>
Committed: Fri May 4 15:01:54 2018 +1000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/cache/AutoSavingCache.java | 3 +-
.../cassandra/db/compaction/CompactionInfo.java | 33 +++++++++++++++++---
.../apache/cassandra/db/view/ViewBuilder.java | 19 ++++++-----
.../io/sstable/IndexSummaryRedistribution.java | 5 +--
.../tools/nodetool/CompactionStats.java | 7 +++--
6 files changed, 48 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 2d7053d,f1dcf52..5f66b62
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,15 -1,5 +1,16 @@@
-3.0.17
+3.11.3
+ * Allow existing nodes to use all peers in shadow round (CASSANDRA-13851)
+ * Fix cqlsh to read connection.ssl cqlshrc option again (CASSANDRA-14299)
+ * Downgrade log level to trace for CommitLogSegmentManager (CASSANDRA-14370)
+ * CQL fromJson(null) throws NullPointerException (CASSANDRA-13891)
+ * Serialize empty buffer as empty string for json output format (CASSANDRA-14245)
+ * Allow logging implementation to be interchanged for embedded testing (CASSANDRA-13396)
+ * SASI tokenizer for simple delimiter based entries (CASSANDRA-14247)
+ * Fix Loss of digits when doing CAST from varint/bigint to decimal (CASSANDRA-14170)
+ * RateBasedBackPressure unnecessarily invokes a lock on the Guava RateLimiter (CASSANDRA-14163)
+ * Fix wildcard GROUP BY queries (CASSANDRA-14209)
+Merged from 3.0:
+ * Fix progress stats and units in compactionstats (CASSANDRA-12244)
* Better handle missing partition columns in system_schema.columns (CASSANDRA-14379)
* Delay hints store excise by write timeout to avoid race with decommission (CASSANDRA-13740)
* Deprecate background repair and probablistic read_repair_chance table options
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/cache/AutoSavingCache.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cache/AutoSavingCache.java
index aa13ca3,00431b9..a40a8a9
--- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java
+++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
@@@ -42,9 -41,11 +42,10 @@@ import org.apache.cassandra.db.ColumnFa
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.FSWriteError;
import org.apache.cassandra.io.util.*;
-import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException;
+import org.apache.cassandra.io.util.CorruptFileException;
import org.apache.cassandra.io.util.DataInputPlus.DataInputStreamPlus;
import org.apache.cassandra.service.CacheService;
import org.apache.cassandra.utils.JVMStabilityInspector;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/db/view/ViewBuilder.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/view/ViewBuilder.java
index 8e647ea,68cb265..d9c9e71
--- a/src/java/org/apache/cassandra/db/view/ViewBuilder.java
+++ b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
@@@ -190,25 -188,9 +193,25 @@@ public class ViewBuilder extends Compac
}
}
+ private void updateDistributed(String ksname, String viewName, UUID localHostId)
+ {
+ try
+ {
+ SystemDistributedKeyspace.successfulViewBuild(ksname, viewName, localHostId);
+ SystemKeyspace.setViewBuiltReplicated(ksname, viewName);
+ }
+ catch (Exception e)
+ {
+ ScheduledExecutors.nonPeriodicTasks.schedule(() -> CompactionManager.instance.submitViewBuilder(this),
+ 5,
+ TimeUnit.MINUTES);
+ logger.warn("Failed to updated the distributed status of view, sleeping 5 minutes before retrying", e);
+ }
+ }
+
public CompactionInfo getCompactionInfo()
{
- long rangesLeft = 0, rangesTotal = 0;
+ long rangesCompleted = 0, rangesTotal = 0;
Token lastToken = prevToken;
// This approximation is not very accurate, but since we do not have a method which allows us to calculate the
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
index 73626d3,ff362e8..ab23ef3
--- a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
+++ b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
@@@ -38,9 -38,9 +38,10 @@@ import org.apache.cassandra.db.Keyspace
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionInterruptedException;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.db.lifecycle.LifecycleTransaction;
import org.apache.cassandra.io.sstable.format.SSTableReader;
+import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.Pair;
import org.apache.cassandra.utils.concurrent.Refs;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/bc30a6f7/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
index 4fd0423,36b5733..d615516
--- a/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
@@@ -17,16 -17,19 +17,18 @@@
*/
package org.apache.cassandra.tools.nodetool;
-import static java.lang.String.format;
-import io.airlift.command.Command;
-import io.airlift.command.Option;
-
import java.text.DecimalFormat;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
+
+import io.airlift.command.Command;
+import io.airlift.command.Option;
+ import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManagerMBean;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.tools.NodeProbe;
import org.apache.cassandra.tools.NodeTool.NodeToolCmd;
@@@ -85,12 -63,13 +87,13 @@@ public class CompactionStats extends No
String taskType = c.get("taskType");
String keyspace = c.get("keyspace");
String columnFamily = c.get("columnfamily");
- String completedStr = humanReadable ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
- String totalStr = humanReadable ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String unit = c.get("unit");
+ boolean toFileSize = humanReadable && Unit.isFileSize(unit);
+ String completedStr = toFileSize ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
+ String totalStr = toFileSize ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String percentComplete = total == 0 ? "n/a" : new DecimalFormat("0.00").format((double) completed / total * 100) + "%";
String id = c.get("compactionId");
- addLine(lines, columnSizes, id, taskType, keyspace, columnFamily, completedStr, totalStr, unit, percentComplete);
+ table.add(id, taskType, keyspace, columnFamily, completedStr, totalStr, unit, percentComplete);
if (taskType.equals(OperationType.COMPACTION.toString()))
remainingBytes += total - completed;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org
[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Posted by mc...@apache.org.
Merge branch 'cassandra-3.11' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/78ca3447
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/78ca3447
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/78ca3447
Branch: refs/heads/trunk
Commit: 78ca3447c9735682119b01bdf98f06bb75f413ff
Parents: 645d827 bc30a6f
Author: Mick Semb Wever <mc...@apache.org>
Authored: Fri May 4 15:08:21 2018 +1000
Committer: Mick Semb Wever <mc...@apache.org>
Committed: Fri May 4 15:14:04 2018 +1000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/cache/AutoSavingCache.java | 3 +-
.../cassandra/db/compaction/CompactionInfo.java | 33 +++++++++++++++++---
.../cassandra/db/view/ViewBuilderTask.java | 5 +--
.../io/sstable/IndexSummaryRedistribution.java | 5 +--
.../tools/nodetool/CompactionStats.java | 7 +++--
6 files changed, 42 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/78ca3447/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index f0afbe6,5f66b62..628d0af
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -246,8 -10,11 +246,9 @@@
* RateBasedBackPressure unnecessarily invokes a lock on the Guava RateLimiter (CASSANDRA-14163)
* Fix wildcard GROUP BY queries (CASSANDRA-14209)
Merged from 3.0:
+ * Fix progress stats and units in compactionstats (CASSANDRA-12244)
* Better handle missing partition columns in system_schema.columns (CASSANDRA-14379)
* Delay hints store excise by write timeout to avoid race with decommission (CASSANDRA-13740)
- * Deprecate background repair and probablistic read_repair_chance table options
- (CASSANDRA-13910)
* Add missed CQL keywords to documentation (CASSANDRA-14359)
* Fix unbounded validation compactions on repair / revert CASSANDRA-13797 (CASSANDRA-14332)
* Avoid deadlock when running nodetool refresh before node is fully up (CASSANDRA-14310)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/78ca3447/src/java/org/apache/cassandra/cache/AutoSavingCache.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/78ca3447/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
index d3235bc,93bb4c9..ccdfeb4
--- a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
@@@ -32,20 -32,43 +32,43 @@@ public final class CompactionInfo imple
private final OperationType tasktype;
private final long completed;
private final long total;
- private final String unit;
+ private final Unit unit;
private final UUID compactionId;
+ public CompactionInfo(TableMetadata metadata, OperationType tasktype, long bytesComplete, long totalBytes, UUID compactionId)
+ {
- this(metadata, tasktype, bytesComplete, totalBytes, "bytes", compactionId);
++ this(metadata, tasktype, bytesComplete, totalBytes, Unit.BYTES, compactionId);
+ }
+
- public CompactionInfo(OperationType tasktype, long completed, long total, String unit, UUID compactionId)
+ public static enum Unit
+ {
- BYTES("bytes"), RANGES("ranges"), KEYS("keys");
++ BYTES("bytes"), RANGES("token range parts"), KEYS("keys");
+
+ private final String name;
+
+ private Unit(String name)
+ {
+ this.name = name;
+ }
+
+ @Override
+ public String toString()
+ {
- return name;
++ return this.name;
+ }
+
+ public static boolean isFileSize(String unit)
+ {
+ return BYTES.toString().equals(unit);
+ }
+ }
+
- public CompactionInfo(CFMetaData cfm, OperationType tasktype, long bytesComplete, long totalBytes, UUID compactionId)
- {
- this(cfm, tasktype, bytesComplete, totalBytes, Unit.BYTES, compactionId);
- }
-
+ public CompactionInfo(OperationType tasktype, long completed, long total, Unit unit, UUID compactionId)
{
this(null, tasktype, completed, total, unit, compactionId);
}
- public CompactionInfo(TableMetadata metadata, OperationType tasktype, long completed, long total, String unit, UUID compactionId)
- public CompactionInfo(CFMetaData cfm, OperationType tasktype, long completed, long total, Unit unit, UUID compactionId)
++ public CompactionInfo(TableMetadata metadata, OperationType tasktype, long completed, long total, Unit unit, UUID compactionId)
{
this.tasktype = tasktype;
this.completed = completed;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/78ca3447/src/java/org/apache/cassandra/db/view/ViewBuilderTask.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/view/ViewBuilderTask.java
index 0273c17,0000000..1b16f18
mode 100644,000000..100644
--- a/src/java/org/apache/cassandra/db/view/ViewBuilderTask.java
+++ b/src/java/org/apache/cassandra/db/view/ViewBuilderTask.java
@@@ -1,250 -1,0 +1,251 @@@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cassandra.db.view;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.UUID;
+import java.util.concurrent.Callable;
+import java.util.concurrent.atomic.AtomicLong;
+
+import com.google.common.base.Function;
+import com.google.common.base.Objects;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.PeekingIterator;
+import com.google.common.util.concurrent.Futures;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.cassandra.db.ColumnFamilyStore;
+import org.apache.cassandra.db.DecoratedKey;
+import org.apache.cassandra.db.DeletionTime;
+import org.apache.cassandra.db.Mutation;
+import org.apache.cassandra.db.ReadExecutionController;
+import org.apache.cassandra.db.ReadQuery;
+import org.apache.cassandra.db.SinglePartitionReadCommand;
+import org.apache.cassandra.db.SystemKeyspace;
+import org.apache.cassandra.db.compaction.CompactionInfo;
++import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
+import org.apache.cassandra.db.compaction.CompactionInterruptedException;
+import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.lifecycle.SSTableSet;
+import org.apache.cassandra.db.partitions.UnfilteredPartitionIterators;
+import org.apache.cassandra.db.rows.Rows;
+import org.apache.cassandra.db.rows.UnfilteredRowIterator;
+import org.apache.cassandra.db.rows.UnfilteredRowIterators;
+import org.apache.cassandra.dht.Range;
+import org.apache.cassandra.dht.Token;
+import org.apache.cassandra.io.sstable.ReducingKeyIterator;
+import org.apache.cassandra.io.sstable.format.SSTableReader;
+import org.apache.cassandra.service.StorageProxy;
+import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.utils.UUIDGen;
+import org.apache.cassandra.utils.concurrent.Refs;
+
+public class ViewBuilderTask extends CompactionInfo.Holder implements Callable<Long>
+{
+ private static final Logger logger = LoggerFactory.getLogger(ViewBuilderTask.class);
+
+ private static final int ROWS_BETWEEN_CHECKPOINTS = 1000;
+
+ private final ColumnFamilyStore baseCfs;
+ private final View view;
+ private final Range<Token> range;
+ private final UUID compactionId;
+ private volatile Token prevToken;
+ private volatile long keysBuilt = 0;
+ private volatile boolean isStopped = false;
+ private volatile boolean isCompactionInterrupted = false;
+
+ ViewBuilderTask(ColumnFamilyStore baseCfs, View view, Range<Token> range, Token lastToken, long keysBuilt)
+ {
+ this.baseCfs = baseCfs;
+ this.view = view;
+ this.range = range;
+ this.compactionId = UUIDGen.getTimeUUID();
+ this.prevToken = lastToken;
+ this.keysBuilt = keysBuilt;
+ }
+
+ private void buildKey(DecoratedKey key)
+ {
+ ReadQuery selectQuery = view.getReadQuery();
+
+ if (!selectQuery.selectsKey(key))
+ {
+ logger.trace("Skipping {}, view query filters", key);
+ return;
+ }
+
+ int nowInSec = FBUtilities.nowInSeconds();
+ SinglePartitionReadCommand command = view.getSelectStatement().internalReadForView(key, nowInSec);
+
+ // We're rebuilding everything from what's on disk, so we read everything, consider that as new updates
+ // and pretend that there is nothing pre-existing.
+ UnfilteredRowIterator empty = UnfilteredRowIterators.noRowsIterator(baseCfs.metadata(), key, Rows.EMPTY_STATIC_ROW, DeletionTime.LIVE, false);
+
+ try (ReadExecutionController orderGroup = command.executionController();
+ UnfilteredRowIterator data = UnfilteredPartitionIterators.getOnlyElement(command.executeLocally(orderGroup), command))
+ {
+ Iterator<Collection<Mutation>> mutations = baseCfs.keyspace.viewManager
+ .forTable(baseCfs.metadata.id)
+ .generateViewUpdates(Collections.singleton(view), data, empty, nowInSec, true);
+
+ AtomicLong noBase = new AtomicLong(Long.MAX_VALUE);
+ mutations.forEachRemaining(m -> StorageProxy.mutateMV(key.getKey(), m, true, noBase, System.nanoTime()));
+ }
+ }
+
+ public Long call()
+ {
+ String ksName = baseCfs.metadata.keyspace;
+
+ if (prevToken == null)
+ logger.debug("Starting new view build for range {}", range);
+ else
+ logger.debug("Resuming view build for range {} from token {} with {} covered keys", range, prevToken, keysBuilt);
+
+ Function<org.apache.cassandra.db.lifecycle.View, Iterable<SSTableReader>> function;
+ function = org.apache.cassandra.db.lifecycle.View.select(SSTableSet.CANONICAL, s -> range.intersects(s.getBounds()));
+
+ try (ColumnFamilyStore.RefViewFragment viewFragment = baseCfs.selectAndReference(function);
+ Refs<SSTableReader> sstables = viewFragment.refs;
+ ReducingKeyIterator keyIter = new ReducingKeyIterator(sstables))
+ {
+ PeekingIterator<DecoratedKey> iter = Iterators.peekingIterator(keyIter);
+ while (!isStopped && iter.hasNext())
+ {
+ DecoratedKey key = iter.next();
+ Token token = key.getToken();
+ //skip tokens already built or not present in range
+ if (range.contains(token) && (prevToken == null || token.compareTo(prevToken) > 0))
+ {
+ buildKey(key);
+ ++keysBuilt;
+ //build other keys sharing the same token
+ while (iter.hasNext() && iter.peek().getToken().equals(token))
+ {
+ key = iter.next();
+ buildKey(key);
+ ++keysBuilt;
+ }
+ if (keysBuilt % ROWS_BETWEEN_CHECKPOINTS == 1)
+ SystemKeyspace.updateViewBuildStatus(ksName, view.name, range, token, keysBuilt);
+ prevToken = token;
+ }
+ }
+ }
+
+ finish();
+
+ return keysBuilt;
+ }
+
+ private void finish()
+ {
+ String ksName = baseCfs.keyspace.getName();
+ if (!isStopped)
+ {
+ // Save the completed status using the end of the range as last token. This way it will be possible for
+ // future view build attempts to don't even create a task for this range
+ SystemKeyspace.updateViewBuildStatus(ksName, view.name, range, range.right, keysBuilt);
+
+ logger.debug("Completed build of view({}.{}) for range {} after covering {} keys ", ksName, view.name, range, keysBuilt);
+ }
+ else
+ {
+ logger.debug("Stopped build for view({}.{}) for range {} after covering {} keys", ksName, view.name, range, keysBuilt);
+
+ // If it's stopped due to a compaction interruption we should throw that exception.
+ // Otherwise we assume that the task has been stopped due to a schema update and we can finish successfully.
+ if (isCompactionInterrupted)
+ throw new StoppedException(ksName, view.name, getCompactionInfo());
+ }
+ }
+
+ @Override
+ public CompactionInfo getCompactionInfo()
+ {
+ // If there's splitter, calculate progress based on last token position
+ if (range.left.getPartitioner().splitter().isPresent())
+ {
+ long progress = prevToken == null ? 0 : Math.round(prevToken.getPartitioner().splitter().get().positionInRange(prevToken, range) * 1000);
- return new CompactionInfo(baseCfs.metadata(), OperationType.VIEW_BUILD, progress, 1000, "token range parts", compactionId);
++ return new CompactionInfo(baseCfs.metadata(), OperationType.VIEW_BUILD, progress, 1000, Unit.RANGES, compactionId);
+ }
+
+ // When there is no splitter, estimate based on number of total keys but
+ // take the max with keysBuilt + 1 to avoid having more completed than total
+ long keysTotal = Math.max(keysBuilt + 1, baseCfs.estimatedKeysForRange(range));
- return new CompactionInfo(baseCfs.metadata(), OperationType.VIEW_BUILD, keysBuilt, keysTotal, "keys", compactionId);
++ return new CompactionInfo(baseCfs.metadata(), OperationType.VIEW_BUILD, keysBuilt, keysTotal, Unit.KEYS, compactionId);
+ }
+
+ @Override
+ public void stop()
+ {
+ stop(true);
+ }
+
+ synchronized void stop(boolean isCompactionInterrupted)
+ {
+ isStopped = true;
+ this.isCompactionInterrupted = isCompactionInterrupted;
+ }
+
+ long keysBuilt()
+ {
+ return keysBuilt;
+ }
+
+ /**
+ * {@link CompactionInterruptedException} with {@link Object#equals(Object)} and {@link Object#hashCode()}
+ * implementations that consider equals all the exceptions produced by the same view build, independently of their
+ * token range.
+ * <p>
+ * This is used to avoid Guava's {@link Futures#allAsList(Iterable)} log spamming when multiple build tasks fail
+ * due to compaction interruption.
+ */
+ static class StoppedException extends CompactionInterruptedException
+ {
+ private final String ksName, viewName;
+
+ private StoppedException(String ksName, String viewName, CompactionInfo info)
+ {
+ super(info);
+ this.ksName = ksName;
+ this.viewName = viewName;
+ }
+
+ @Override
+ public boolean equals(Object o)
+ {
+ if (!(o instanceof StoppedException))
+ return false;
+
+ StoppedException that = (StoppedException) o;
+ return Objects.equal(this.ksName, that.ksName) && Objects.equal(this.viewName, that.viewName);
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return 31 * ksName.hashCode() + viewName.hashCode();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/78ca3447/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
index 24de918,ab23ef3..1aaeb8b
--- a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
+++ b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
@@@ -28,18 -28,19 +28,19 @@@ import java.util.Map
import java.util.UUID;
import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionInterruptedException;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.db.lifecycle.LifecycleTransaction;
import org.apache.cassandra.io.sstable.format.SSTableReader;
+import org.apache.cassandra.schema.TableId;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.Pair;
import org.apache.cassandra.utils.concurrent.Refs;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/78ca3447/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
index 5eb5b24,d615516..574220e
--- a/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
@@@ -22,11 -22,13 +22,13 @@@ import java.util.List
import java.util.Map;
import java.util.Map.Entry;
-import io.airlift.command.Command;
-import io.airlift.command.Option;
+import io.airlift.airline.Command;
+import io.airlift.airline.Option;
+ import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManagerMBean;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.tools.NodeProbe;
import org.apache.cassandra.tools.NodeTool.NodeToolCmd;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org
[3/6] cassandra git commit: fix viewbuilder progress and display in
compactionstats
Posted by mc...@apache.org.
fix viewbuilder progress and display in compactionstats
patch by Zhao Yang (jasonstack); reviewed by Mick Semb Wever for CASSANDRA-12244
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9d498dce
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9d498dce
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9d498dce
Branch: refs/heads/trunk
Commit: 9d498dced6cea77b027b8a74bf4ae9201c8afdf5
Parents: 15c463c
Author: Mick Semb Wever <mc...@apache.org>
Authored: Wed May 2 14:21:40 2018 +1000
Committer: Mick Semb Wever <mc...@apache.org>
Committed: Fri May 4 14:46:25 2018 +1000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/cache/AutoSavingCache.java | 3 +-
.../cassandra/db/compaction/CompactionInfo.java | 33 +++++++++++++++++---
.../apache/cassandra/db/view/ViewBuilder.java | 19 ++++++-----
.../io/sstable/IndexSummaryRedistribution.java | 5 +--
.../tools/nodetool/CompactionStats.java | 7 +++--
6 files changed, 48 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index e549cda..f1dcf52 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.17
+ * Fix progress stats and units in compactionstats (CASSANDRA-12244)
* Better handle missing partition columns in system_schema.columns (CASSANDRA-14379)
* Delay hints store excise by write timeout to avoid race with decommission (CASSANDRA-13740)
* Deprecate background repair and probablistic read_repair_chance table options
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/cache/AutoSavingCache.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
index e39dcf1..00431b9 100644
--- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java
+++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
@@ -42,6 +42,7 @@ import org.apache.cassandra.db.SystemKeyspace;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.FSWriteError;
import org.apache.cassandra.io.util.*;
import org.apache.cassandra.io.util.ChecksummedRandomAccessReader.CorruptFileException;
@@ -304,7 +305,7 @@ public class AutoSavingCache<K extends CacheKey, V> extends InstrumentingCache<K
type,
0,
keysEstimate,
- "keys",
+ Unit.KEYS,
UUIDGen.getTimeUUID());
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
index 3cd8737..404c07f 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionInfo.java
@@ -34,20 +34,43 @@ public final class CompactionInfo implements Serializable
private final OperationType tasktype;
private final long completed;
private final long total;
- private final String unit;
+ private final Unit unit;
private final UUID compactionId;
+ public static enum Unit
+ {
+ BYTES("bytes"), RANGES("ranges"), KEYS("keys");
+
+ private final String name;
+
+ private Unit(String name)
+ {
+ this.name = name;
+ }
+
+ @Override
+ public String toString()
+ {
+ return name;
+ }
+
+ public static boolean isFileSize(String unit)
+ {
+ return BYTES.toString().equals(unit);
+ }
+ }
+
public CompactionInfo(CFMetaData cfm, OperationType tasktype, long bytesComplete, long totalBytes, UUID compactionId)
{
- this(cfm, tasktype, bytesComplete, totalBytes, "bytes", compactionId);
+ this(cfm, tasktype, bytesComplete, totalBytes, Unit.BYTES, compactionId);
}
- public CompactionInfo(OperationType tasktype, long completed, long total, String unit, UUID compactionId)
+ public CompactionInfo(OperationType tasktype, long completed, long total, Unit unit, UUID compactionId)
{
this(null, tasktype, completed, total, unit, compactionId);
}
- public CompactionInfo(CFMetaData cfm, OperationType tasktype, long completed, long total, String unit, UUID compactionId)
+ public CompactionInfo(CFMetaData cfm, OperationType tasktype, long completed, long total, Unit unit, UUID compactionId)
{
this.tasktype = tasktype;
this.completed = completed;
@@ -129,7 +152,7 @@ public final class CompactionInfo implements Serializable
ret.put("completed", Long.toString(completed));
ret.put("total", Long.toString(total));
ret.put("taskType", tasktype.toString());
- ret.put("unit", unit);
+ ret.put("unit", unit.toString());
ret.put("compactionId", compactionId == null ? "" : compactionId.toString());
return ret;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/db/view/ViewBuilder.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/view/ViewBuilder.java b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
index 94314fd..68cb265 100644
--- a/src/java/org/apache/cassandra/db/view/ViewBuilder.java
+++ b/src/java/org/apache/cassandra/db/view/ViewBuilder.java
@@ -25,18 +25,21 @@ import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
+
import javax.annotation.Nullable;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.cassandra.concurrent.ScheduledExecutors;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.db.lifecycle.SSTableSet;
import org.apache.cassandra.db.partitions.*;
import org.apache.cassandra.db.rows.*;
@@ -187,7 +190,7 @@ public class ViewBuilder extends CompactionInfo.Holder
public CompactionInfo getCompactionInfo()
{
- long rangesLeft = 0, rangesTotal = 0;
+ long rangesCompleted = 0, rangesTotal = 0;
Token lastToken = prevToken;
// This approximation is not very accurate, but since we do not have a method which allows us to calculate the
@@ -197,15 +200,11 @@ public class ViewBuilder extends CompactionInfo.Holder
// has.
for (Range<Token> range : StorageService.instance.getLocalRanges(baseCfs.keyspace.getName()))
{
- rangesLeft++;
rangesTotal++;
- // This will reset rangesLeft, so that the number of ranges left will be less than the total ranges at the
- // end of the method.
- if (lastToken == null || range.contains(lastToken))
- rangesLeft = 0;
- }
-
- return new CompactionInfo(baseCfs.metadata, OperationType.VIEW_BUILD, rangesLeft, rangesTotal, "ranges", compactionId);
+ if ((lastToken != null) && lastToken.compareTo(range.right) > 0)
+ rangesCompleted++;
+ }
+ return new CompactionInfo(baseCfs.metadata, OperationType.VIEW_BUILD, rangesCompleted, rangesTotal, Unit.RANGES, compactionId);
}
public void stop()
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
index ebe98e5..ff362e8 100644
--- a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
+++ b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
@@ -30,14 +30,15 @@ import java.util.UUID;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionInterruptedException;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.db.lifecycle.LifecycleTransaction;
import org.apache.cassandra.io.sstable.format.SSTableReader;
import org.apache.cassandra.utils.Pair;
@@ -308,7 +309,7 @@ public class IndexSummaryRedistribution extends CompactionInfo.Holder
public CompactionInfo getCompactionInfo()
{
- return new CompactionInfo(OperationType.INDEX_SUMMARY, (memoryPoolBytes - remainingSpace), memoryPoolBytes, "bytes", compactionId);
+ return new CompactionInfo(OperationType.INDEX_SUMMARY, (memoryPoolBytes - remainingSpace), memoryPoolBytes, Unit.BYTES, compactionId);
}
/** Utility class for sorting sstables by their read rates. */
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d498dce/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java b/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
index bac23c2..36b5733 100644
--- a/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/CompactionStats.java
@@ -26,8 +26,10 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.apache.cassandra.db.compaction.CompactionInfo;
import org.apache.cassandra.db.compaction.CompactionManagerMBean;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.compaction.CompactionInfo.Unit;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.tools.NodeProbe;
import org.apache.cassandra.tools.NodeTool.NodeToolCmd;
@@ -61,9 +63,10 @@ public class CompactionStats extends NodeToolCmd
String taskType = c.get("taskType");
String keyspace = c.get("keyspace");
String columnFamily = c.get("columnfamily");
- String completedStr = humanReadable ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
- String totalStr = humanReadable ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String unit = c.get("unit");
+ boolean toFileSize = humanReadable && Unit.isFileSize(unit);
+ String completedStr = toFileSize ? FileUtils.stringifyFileSize(completed) : Long.toString(completed);
+ String totalStr = toFileSize ? FileUtils.stringifyFileSize(total) : Long.toString(total);
String percentComplete = total == 0 ? "n/a" : new DecimalFormat("0.00").format((double) completed / total * 100) + "%";
String id = c.get("compactionId");
addLine(lines, columnSizes, id, taskType, keyspace, columnFamily, completedStr, totalStr, unit, percentComplete);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org