merge from 1.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9620e0cc Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9620e0cc Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9620e0cc Branch: refs/heads/trunk Commit: 9620e0cc345bede9bfda89c840e514ca88a09079 Parents: b557f7e f31e399 Author: Jonathan Ellis <jbel...@apache.org> Authored: Tue Oct 8 15:41:32 2013 -0500 Committer: Jonathan Ellis <jbel...@apache.org> Committed: Tue Oct 8 15:41:32 2013 -0500 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/db/ColumnFamilyStore.java | 14 ++++---------- .../apache/cassandra/db/ColumnFamilyStoreMBean.java | 9 ++++----- .../apache/cassandra/metrics/ColumnFamilyMetrics.java | 6 +++--- src/java/org/apache/cassandra/tools/NodeCmd.java | 2 ++ 5 files changed, 14 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9620e0cc/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index 1877a85,c4ee9f4..4375475 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -40,43 -16,10 +40,44 @@@ Merged from 1.2 * Expose connected thrift + native client counts (CASSANDRA-5084) * Optimize auth setup (CASSANDRA-6122) * Trace index selection (CASSANDRA-6001) + * Update sstablesPerReadHistogram to use biased sampling (CASSANDRA-6164) -1.2.10 +2.0.1 + * Fix bug that could allow reading deleted data temporarily (CASSANDRA-6025) + * Improve memory use defaults (CASSANDRA-5069) + * Make ThriftServer more easlly extensible (CASSANDRA-6058) + * Remove Hadoop dependency from ITransportFactory (CASSANDRA-6062) + * add file_cache_size_in_mb setting (CASSANDRA-5661) + * Improve error message when yaml contains invalid properties (CASSANDRA-5958) + * Improve leveled compaction's ability to find non-overlapping L0 compactions + to work on concurrently (CASSANDRA-5921) + * Notify indexer of columns shadowed by range tombstones (CASSANDRA-5614) + * Log Merkle tree stats (CASSANDRA-2698) + * Switch from crc32 to adler32 for compressed sstable checksums (CASSANDRA-5862) + * Improve offheap memcpy performance (CASSANDRA-5884) + * Use a range aware scanner for cleanup (CASSANDRA-2524) + * Cleanup doesn't need to inspect sstables that contain only local data + (CASSANDRA-5722) + * Add ability for CQL3 to list partition keys (CASSANDRA-4536) + * Improve native protocol serialization (CASSANDRA-5664) + * Upgrade Thrift to 0.9.1 (CASSANDRA-5923) + * Require superuser status for adding triggers (CASSANDRA-5963) + * Make standalone scrubber handle old and new style leveled manifest + (CASSANDRA-6005) + * Fix paxos bugs (CASSANDRA-6012, 6013, 6023) + * Fix paged ranges with multiple replicas (CASSANDRA-6004) + * Fix potential AssertionError during tracing (CASSANDRA-6041) + * Fix NPE in sstablesplit (CASSANDRA-6027) + * Migrate pre-2.0 key/value/column aliases to system.schema_columns + (CASSANDRA-6009) + * Paging filter empty rows too agressively (CASSANDRA-6040) + * Support variadic parameters for IN clauses (CASSANDRA-4210) + * cqlsh: return the result of CAS writes (CASSANDRA-5796) + * Fix validation of IN clauses with 2ndary indexes (CASSANDRA-6050) + * Support named bind variables in CQL (CASSANDRA-6033) +Merged from 1.2: + * Allow cache-keys-to-save to be set at runtime (CASSANDRA-5980) * Avoid second-guessing out-of-space state (CASSANDRA-5605) * Tuning knobs for dealing with large blobs and many CFs (CASSANDRA-5982) * (Hadoop) Fix CQLRW for thrift tables (CASSANDRA-6002) http://git-wip-us.apache.org/repos/asf/cassandra/blob/9620e0cc/src/java/org/apache/cassandra/db/ColumnFamilyStore.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 84a8d06,a7e8605..117df6f --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@@ -2163,29 -1901,24 +2163,23 @@@ public class ColumnFamilyStore implemen private void validateCompactionThresholds(int minThreshold, int maxThreshold) { - if (minThreshold > maxThreshold && maxThreshold != 0) + if (minThreshold > maxThreshold) throw new RuntimeException(String.format("The min_compaction_threshold cannot be larger than the max_compaction_threshold. " + "Min is '%d', Max is '%d'.", minThreshold, maxThreshold)); - } - public boolean isCompactionDisabled() - { - return getMinimumCompactionThreshold() <= 0 || getMaximumCompactionThreshold() <= 0; + if (maxThreshold == 0 || minThreshold == 0) + throw new RuntimeException("Disabling compaction by setting min_compaction_threshold or max_compaction_threshold to 0 " + + "is deprecated, set the compaction strategy option 'enabled' to 'false' instead or use the nodetool command 'disableautocompaction'."); } - public long getTombstonesPerLastRead() + public double getTombstonesPerSlice() { - return metric.tombstoneScannedHistogram.count(); + return metric.tombstoneScannedHistogram.getSnapshot().getMedian(); } - public float getPercentageTombstonesPerLastRead() + public double getLiveCellsPerSlice() { - long total = metric.tombstoneScannedHistogram.count() + metric.liveScannedHistogram.count(); - return ((float) metric.tombstoneScannedHistogram.count() / total); - } - - public long getLiveCellsPerLastRead() - { - return metric.liveScannedHistogram.count(); + return metric.liveScannedHistogram.getSnapshot().getMedian(); } // End JMX get/set. http://git-wip-us.apache.org/repos/asf/cassandra/blob/9620e0cc/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java index 6105714,9ee7568..1ca922b --- a/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java @@@ -281,16 -281,18 +281,15 @@@ public interface ColumnFamilyStoreMBea */ public void setCrcCheckChance(double crcCheckChance); - /** - * Disable automatic compaction. - */ - public void disableAutoCompaction(); + public boolean isAutoCompactionDisabled(); /** Number of tombstoned cells retreived during the last slicequery */ - public long getTombstonesPerLastRead(); - - /** Percentage of tombstoned cells retreived during the last slicequery */ - public float getPercentageTombstonesPerLastRead(); + @Deprecated + public double getTombstonesPerSlice(); /** Number of live cells retreived during the last slicequery */ - public long getLiveCellsPerLastRead(); + @Deprecated + public double getLiveCellsPerSlice(); public long estimateKeys(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/9620e0cc/src/java/org/apache/cassandra/metrics/ColumnFamilyMetrics.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/metrics/ColumnFamilyMetrics.java index 7265c7b,cb13c22..aabf373 --- a/src/java/org/apache/cassandra/metrics/ColumnFamilyMetrics.java +++ b/src/java/org/apache/cassandra/metrics/ColumnFamilyMetrics.java @@@ -304,10 -299,8 +304,10 @@@ public class ColumnFamilyMetric return Math.max(requests, 1); // to avoid NaN. } }); - tombstoneScannedHistogram = Metrics.newHistogram(factory.createMetricName("TombstoneScannedHistogram")); - liveScannedHistogram = Metrics.newHistogram(factory.createMetricName("LiveScannedHistogram")); + tombstoneScannedHistogram = Metrics.newHistogram(factory.createMetricName("TombstoneScannedHistogram"), true); + liveScannedHistogram = Metrics.newHistogram(factory.createMetricName("LiveScannedHistogram"), true); + coordinatorReadLatency = Metrics.newTimer(factory.createMetricName("CoordinatorReadLatency"), TimeUnit.MICROSECONDS, TimeUnit.SECONDS); + coordinatorScanLatency = Metrics.newTimer(factory.createMetricName("CoordinatorScanLatency"), TimeUnit.MICROSECONDS, TimeUnit.SECONDS); } public void updateSSTableIterated(int count) http://git-wip-us.apache.org/repos/asf/cassandra/blob/9620e0cc/src/java/org/apache/cassandra/tools/NodeCmd.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/tools/NodeCmd.java index d47a4a3,86f9eef..95da85a --- a/src/java/org/apache/cassandra/tools/NodeCmd.java +++ b/src/java/org/apache/cassandra/tools/NodeCmd.java @@@ -875,24 -898,26 +875,26 @@@ public class NodeCm outs.println("]"); } } - outs.println("\t\tSpace used (live): " + cfstore.getLiveDiskSpaceUsed()); - outs.println("\t\tSpace used (total): " + cfstore.getTotalDiskSpaceUsed()); + outs.println("\t\tSpace used (live), bytes: " + cfstore.getLiveDiskSpaceUsed()); + outs.println("\t\tSpace used (total), bytes: " + cfstore.getTotalDiskSpaceUsed()); outs.println("\t\tSSTable Compression Ratio: " + cfstore.getCompressionRatio()); - outs.println("\t\tNumber of Keys (estimate): " + cfstore.estimateKeys()); - outs.println("\t\tMemtable Columns Count: " + cfstore.getMemtableColumnsCount()); - outs.println("\t\tMemtable Data Size: " + cfstore.getMemtableDataSize()); - outs.println("\t\tMemtable Switch Count: " + cfstore.getMemtableSwitchCount()); - outs.println("\t\tRead Count: " + cfstore.getReadCount()); - outs.println("\t\tRead Latency: " + String.format("%01.3f", cfstore.getRecentReadLatencyMicros() / 1000) + " ms."); - outs.println("\t\tWrite Count: " + cfstore.getWriteCount()); - outs.println("\t\tWrite Latency: " + String.format("%01.3f", cfstore.getRecentWriteLatencyMicros() / 1000) + " ms."); - outs.println("\t\tPending Tasks: " + cfstore.getPendingTasks()); - outs.println("\t\tBloom Filter False Positives: " + cfstore.getBloomFilterFalsePositives()); - outs.println("\t\tBloom Filter False Ratio: " + String.format("%01.5f", cfstore.getRecentBloomFilterFalseRatio())); - outs.println("\t\tBloom Filter Space Used: " + cfstore.getBloomFilterDiskSpaceUsed()); - outs.println("\t\tCompacted row minimum size: " + cfstore.getMinRowSize()); - outs.println("\t\tCompacted row maximum size: " + cfstore.getMaxRowSize()); - outs.println("\t\tCompacted row mean size: " + cfstore.getMeanRowSize()); + outs.println("\t\tNumber of keys (estimate): " + cfstore.estimateKeys()); + outs.println("\t\tMemtable cell count: " + cfstore.getMemtableColumnsCount()); + outs.println("\t\tMemtable data size, bytes: " + cfstore.getMemtableDataSize()); + outs.println("\t\tMemtable switch count: " + cfstore.getMemtableSwitchCount()); + outs.println("\t\tLocal read count: " + cfstore.getReadCount()); + outs.printf("\t\tLocal read latency: %01.3f ms%n", cfstore.getRecentReadLatencyMicros() / 1000); + outs.println("\t\tLocal write count: " + cfstore.getWriteCount()); + outs.printf("\t\tLocal write latency: %01.3f ms%n", cfstore.getRecentWriteLatencyMicros() / 1000); + outs.println("\t\tPending tasks: " + cfstore.getPendingTasks()); + outs.println("\t\tBloom filter false positives: " + cfstore.getBloomFilterFalsePositives()); + outs.println("\t\tBloom filter false ratio: " + String.format("%01.5f", cfstore.getRecentBloomFilterFalseRatio())); + outs.println("\t\tBloom filter space used, bytes: " + cfstore.getBloomFilterDiskSpaceUsed()); + outs.println("\t\tCompacted partition minimum bytes: " + cfstore.getMinRowSize()); + outs.println("\t\tCompacted partition maximum bytes: " + cfstore.getMaxRowSize()); + outs.println("\t\tCompacted partition mean bytes: " + cfstore.getMeanRowSize()); + outs.println("\t\tAverage live cells per slice (last five minutes): " + cfstore.getLiveCellsPerSlice()); + outs.println("\t\tAverage tombstones per slice (last five minutes): " + cfstore.getTombstonesPerSlice()); outs.println(""); }