From e55863e37532bf5fef1bb04007dced24b1879e28 Mon Sep 17 00:00:00 2001 From: elcallio Date: Tue, 11 Oct 2016 14:05:05 +0200 Subject: [PATCH] Rework ColumnFamilyStore --- .../cassandra/db/ColumnFamilyStore.java | 509 ++---------------- 1 file changed, 59 insertions(+), 450 deletions(-) diff --git a/src/main/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/main/java/org/apache/cassandra/db/ColumnFamilyStore.java index 0bee7af..7b5f2df 100644 --- a/src/main/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/main/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -24,75 +24,61 @@ package org.apache.cassandra.db; import static java.lang.String.valueOf; +import static java.util.Arrays.asList; import static javax.json.Json.createObjectBuilder; import static javax.json.Json.createReader; import static javax.ws.rs.core.MediaType.APPLICATION_JSON; import java.io.StringReader; -import java.lang.management.ManagementFactory; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.Timer; -import java.util.TimerTask; import java.util.concurrent.ExecutionException; +import java.util.logging.Logger; import javax.json.JsonArray; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; import javax.json.JsonValue; import javax.management.MBeanServer; +import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.openmbean.CompositeData; import javax.management.openmbean.OpenDataException; import javax.ws.rs.core.MultivaluedHashMap; import javax.ws.rs.core.MultivaluedMap; -import org.apache.cassandra.metrics.ColumnFamilyMetrics; +import org.apache.cassandra.metrics.TableMetrics; import com.scylladb.jmx.api.APIClient; +import com.scylladb.jmx.metrics.MetricsMBean; -public class ColumnFamilyStore implements ColumnFamilyStoreMBean { - private static final java.util.logging.Logger logger = java.util.logging.Logger - .getLogger(ColumnFamilyStore.class.getName()); - private APIClient c = new APIClient(); +public class ColumnFamilyStore extends MetricsMBean implements ColumnFamilyStoreMBean { + private static final Logger logger = Logger.getLogger(ColumnFamilyStore.class.getName()); @SuppressWarnings("unused") - private String type; - private String keyspace; - private String name; - private String mbeanName; - private static APIClient s_c = new APIClient(); - static final int INTERVAL = 1000; // update every 1second - public final ColumnFamilyMetrics metric; + private final String type; + private final String keyspace; + private final String name; - private static Map cf = new HashMap(); - private static Timer timer = new Timer("Column Family"); + public static final Set TYPE_NAMES = new HashSet<>(asList("ColumnFamilies", "IndexTables", "Tables")); public void log(String str) { logger.finest(str); } - public static void register_mbeans() { - TimerTask taskToExecute = new CheckRegistration(); - timer.schedule(taskToExecute, 100, INTERVAL); - } - - public ColumnFamilyStore(String type, String keyspace, String name) { + public ColumnFamilyStore(APIClient client, String type, String keyspace, String name) { + super(client, + new TableMetrics(keyspace, name, false /* hardcoded for now */)); this.type = type; this.keyspace = keyspace; this.name = name; - mbeanName = getName(type, keyspace, name); - try { - MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); - ObjectName nameObj = new ObjectName(mbeanName); - mbs.registerMBean(this, nameObj); - } catch (Exception e) { - throw new RuntimeException(e); - } - metric = new ColumnFamilyMetrics(this); + } + + public ColumnFamilyStore(APIClient client, ObjectName name) { + this(client, name.getKeyProperty("type"), name.getKeyProperty("keyspace"), name.getKeyProperty("columnfamily")); } /** true if this CFS contains secondary index data */ @@ -112,59 +98,19 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { return keyspace + ":" + name; } - private static String getName(String type, String keyspace, String name) { - return "org.apache.cassandra.db:type=" + type + ",keyspace=" + keyspace - + ",columnfamily=" + name; + private static ObjectName getName(String type, String keyspace, String name) throws MalformedObjectNameException { + return new ObjectName( + "org.apache.cassandra.db:type=" + type + ",keyspace=" + keyspace + ",columnfamily=" + name); } - public static boolean checkRegistration() { - try { - JsonArray mbeans = s_c.getJsonArray("/column_family/"); - Set all_cf = new HashSet(); - for (int i = 0; i < mbeans.size(); i++) { - JsonObject mbean = mbeans.getJsonObject(i); - String name = getName(mbean.getString("type"), - mbean.getString("ks"), mbean.getString("cf")); - if (!cf.containsKey(name)) { - ColumnFamilyStore cfs = new ColumnFamilyStore( - mbean.getString("type"), mbean.getString("ks"), - mbean.getString("cf")); - cf.put(name, cfs); - } - all_cf.add(name); - } - // removing deleted column family - for (String n : cf.keySet()) { - if (!all_cf.contains(n)) { - cf.remove(n); - } - } - } catch (IllegalStateException e) { - return false; - } - return true; - } - - private static final class CheckRegistration extends TimerTask { - private int missed_response = 0; - // After MAX_RETRY retry we assume the API is not available - // and the jmx will shutdown - private static final int MAX_RETRY = 30; - @Override - public void run() { - try { - if (checkRegistration()) { - missed_response = 0; - } else { - if (missed_response++ > MAX_RETRY) { - System.err.println("API is not available, JMX is shuting down"); - System.exit(-1); - } - } - } catch (Exception e) { - // ignoring exceptions, will retry on the next interval - } + public static boolean checkRegistration(APIClient client, MBeanServer server) throws MalformedObjectNameException { + JsonArray mbeans = client.getJsonArray("/column_family/"); + Set all = new HashSet(); + for (int i = 0; i < mbeans.size(); i++) { + JsonObject mbean = mbeans.getJsonObject(i); + all.add(getName(mbean.getString("type"), mbean.getString("ks"), mbean.getString("cf"))); } + return checkRegistration(server, all, n -> TYPE_NAMES.contains(n.getKeyProperty("type")), n -> new ColumnFamilyStore(client, n)); } /** @@ -176,316 +122,12 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { return name; } - /** - * Returns the total amount of data stored in the memtable, including column - * related overhead. - * - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#memtableOnHeapSize - * @return The size in bytes. - * @deprecated - */ - @Deprecated - public long getMemtableDataSize() { - log(" getMemtableDataSize()"); - return c.getLongValue("/column_family/metrics/memtable_on_heap_size/" + getCFName()); - } - - /** - * Returns the total number of columns present in the memtable. - * - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#memtableColumnsCount - * @return The number of columns. - */ - @Deprecated - public long getMemtableColumnsCount() { - log(" getMemtableColumnsCount()"); - return metric.memtableColumnsCount.value(); - } - - /** - * Returns the number of times that a flush has resulted in the memtable - * being switched out. - * - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#memtableSwitchCount - * @return the number of memtable switches - */ - @Deprecated - public int getMemtableSwitchCount() { - log(" getMemtableSwitchCount()"); - return c.getIntValue("/column_family/metrics/memtable_switch_count/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#recentSSTablesPerRead - * @return a histogram of the number of sstable data files accessed per - * read: reading this property resets it - */ - @Deprecated - public long[] getRecentSSTablesPerReadHistogram() { - log(" getRecentSSTablesPerReadHistogram()"); - return metric.getRecentSSTablesPerRead(); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#sstablesPerReadHistogram - * @return a histogram of the number of sstable data files accessed per read - */ - @Deprecated - public long[] getSSTablesPerReadHistogram() { - log(" getSSTablesPerReadHistogram()"); - return metric.sstablesPerRead.getBuckets(false); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#readLatency - * @return the number of read operations on this column family - */ - @Deprecated - public long getReadCount() { - log(" getReadCount()"); - return c.getIntValue("/column_family/metrics/read/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#readLatency - * @return total read latency (divide by getReadCount() for average) - */ - @Deprecated - public long getTotalReadLatencyMicros() { - log(" getTotalReadLatencyMicros()"); - return c.getLongValue("/column_family/metrics/read_latency/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#readLatency - * @return an array representing the latency histogram - */ - @Deprecated - public long[] getLifetimeReadLatencyHistogramMicros() { - log(" getLifetimeReadLatencyHistogramMicros()"); - return metric.readLatency.totalLatencyHistogram.getBuckets(false); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#readLatency - * @return an array representing the latency histogram - */ - @Deprecated - public long[] getRecentReadLatencyHistogramMicros() { - log(" getRecentReadLatencyHistogramMicros()"); - return metric.readLatency.getRecentLatencyHistogram(); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#readLatency - * @return average latency per read operation since the last call - */ - @Deprecated - public double getRecentReadLatencyMicros() { - log(" getRecentReadLatencyMicros()"); - return metric.readLatency.getRecentLatency(); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#writeLatency - * @return the number of write operations on this column family - */ - @Deprecated - public long getWriteCount() { - log(" getWriteCount()"); - return c.getLongValue("/column_family/metrics/write/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#writeLatency - * @return total write latency (divide by getReadCount() for average) - */ - @Deprecated - public long getTotalWriteLatencyMicros() { - log(" getTotalWriteLatencyMicros()"); - return c.getLongValue("/column_family/metrics/write_latency/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#writeLatency - * @return an array representing the latency histogram - */ - @Deprecated - public long[] getLifetimeWriteLatencyHistogramMicros() { - log(" getLifetimeWriteLatencyHistogramMicros()"); - return metric.writeLatency.totalLatencyHistogram.getBuckets(false); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#writeLatency - * @return an array representing the latency histogram - */ - @Deprecated - public long[] getRecentWriteLatencyHistogramMicros() { - log(" getRecentWriteLatencyHistogramMicros()"); - return metric.writeLatency.getRecentLatencyHistogram(); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#writeLatency - * @return average latency per write operation since the last call - */ - @Deprecated - public double getRecentWriteLatencyMicros() { - log(" getRecentWriteLatencyMicros()"); - return metric.writeLatency.getRecentLatency(); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#pendingFlushes - * @return the estimated number of tasks pending for this column family - */ - @Deprecated - public int getPendingTasks() { - log(" getPendingTasks()"); - return c.getIntValue("/column_family/metrics/pending_flushes/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#liveSSTableCount - * @return the number of SSTables on disk for this CF - */ - @Deprecated - public int getLiveSSTableCount() { - log(" getLiveSSTableCount()"); - return c.getIntValue("/column_family/metrics/live_ss_table_count/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#liveDiskSpaceUsed - * @return disk space used by SSTables belonging to this CF - */ - @Deprecated - public long getLiveDiskSpaceUsed() { - log(" getLiveDiskSpaceUsed()"); - return c.getLongValue("/column_family/metrics/live_disk_space_used/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#totalDiskSpaceUsed - * @return total disk space used by SSTables belonging to this CF, including - * obsolete ones waiting to be GC'd - */ - @Deprecated - public long getTotalDiskSpaceUsed() { - log(" getTotalDiskSpaceUsed()"); - return c.getLongValue("/column_family/metrics/total_disk_space_used/" + getCFName()); - } - /** * force a major compaction of this column family */ - public void forceMajorCompaction() - throws ExecutionException, InterruptedException { + public void forceMajorCompaction() throws ExecutionException, InterruptedException { log(" forceMajorCompaction() throws ExecutionException, InterruptedException"); - c.post("column_family/major_compaction/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#minRowSize - * @return the size of the smallest compacted row - */ - @Deprecated - public long getMinRowSize() { - log(" getMinRowSize()"); - return c.getLongValue("/column_family/metrics/min_row_size/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#maxRowSize - * @return the size of the largest compacted row - */ - @Deprecated - public long getMaxRowSize() { - log(" getMaxRowSize()"); - return c.getLongValue("/column_family/metrics/max_row_size/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#meanRowSize - * @return the average row size across all the sstables - */ - @Deprecated - public long getMeanRowSize() { - log(" getMeanRowSize()"); - return c.getLongValue("/column_family/metrics/mean_row_size/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#bloomFilterFalsePositives - */ - @Deprecated - public long getBloomFilterFalsePositives() { - log(" getBloomFilterFalsePositives()"); - return c.getLongValue("/column_family/metrics/bloom_filter_false_positives/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#recentBloomFilterFalsePositives - */ - @Deprecated - public long getRecentBloomFilterFalsePositives() { - log(" getRecentBloomFilterFalsePositives()"); - return c.getLongValue("/column_family/metrics/recent_bloom_filter_false_positives/" +getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#bloomFilterFalseRatio - */ - @Deprecated - public double getBloomFilterFalseRatio() { - log(" getBloomFilterFalseRatio()"); - return c.getDoubleValue("/column_family/metrics/bloom_filter_false_ratio/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#recentBloomFilterFalseRatio - */ - @Deprecated - public double getRecentBloomFilterFalseRatio() { - log(" getRecentBloomFilterFalseRatio()"); - return c.getDoubleValue("/column_family/metrics/recent_bloom_filter_false_ratio/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#bloomFilterDiskSpaceUsed - */ - @Deprecated - public long getBloomFilterDiskSpaceUsed() { - log(" getBloomFilterDiskSpaceUsed()"); - return c.getLongValue("/column_family/metrics/bloom_filter_disk_space_used/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#bloomFilterOffHeapMemoryUsed - */ - @Deprecated - public long getBloomFilterOffHeapMemoryUsed() { - log(" getBloomFilterOffHeapMemoryUsed()"); - return c.getLongValue("/column_family/metrics/bloom_filter_off_heap_memory_used/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#indexSummaryOffHeapMemoryUsed - */ - @Deprecated - public long getIndexSummaryOffHeapMemoryUsed() { - log(" getIndexSummaryOffHeapMemoryUsed()"); - return c.getLongValue("/column_family/metrics/index_summary_off_heap_memory_used/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#compressionMetadataOffHeapMemoryUsed - */ - @Deprecated - public long getCompressionMetadataOffHeapMemoryUsed() { - log(" getCompressionMetadataOffHeapMemoryUsed()"); - return c.getLongValue("/column_family/metrics/compression_metadata_off_heap_memory_used/" + getCFName()); + client.post("column_family/major_compaction/" + getCFName()); } /** @@ -494,7 +136,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public int getMinimumCompactionThreshold() { log(" getMinimumCompactionThreshold()"); - return c.getIntValue("column_family/minimum_compaction/" + getCFName()); + return client.getIntValue("column_family/minimum_compaction/" + getCFName()); } /** @@ -505,7 +147,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { log(" setMinimumCompactionThreshold(int threshold)"); MultivaluedMap queryParams = new MultivaluedHashMap(); queryParams.add("value", Integer.toString(threshold)); - c.post("column_family/minimum_compaction/" + getCFName(), queryParams); + client.post("column_family/minimum_compaction/" + getCFName(), queryParams); } /** @@ -514,7 +156,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public int getMaximumCompactionThreshold() { log(" getMaximumCompactionThreshold()"); - return c.getIntValue("column_family/maximum_compaction/" + getCFName()); + return client.getIntValue("column_family/maximum_compaction/" + getCFName()); } /** @@ -527,7 +169,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { MultivaluedMap queryParams = new MultivaluedHashMap(); queryParams.add("minimum", Integer.toString(minThreshold)); queryParams.add("maximum", Integer.toString(maxThreshold)); - c.post("column_family/compaction" + getCFName(), queryParams); + client.post("column_family/compaction" + getCFName(), queryParams); } /** @@ -538,7 +180,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { log(" setMaximumCompactionThreshold(int threshold)"); MultivaluedMap queryParams = new MultivaluedHashMap(); queryParams.add("value", Integer.toString(threshold)); - c.post("column_family/maximum_compaction/" + getCFName(), queryParams); + client.post("column_family/maximum_compaction/" + getCFName(), queryParams); } /** @@ -551,7 +193,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { log(" setCompactionStrategyClass(String className)"); MultivaluedMap queryParams = new MultivaluedHashMap(); queryParams.add("class_name", className); - c.post("column_family/compaction_strategy/" + getCFName(), queryParams); + client.post("column_family/compaction_strategy/" + getCFName(), queryParams); } /** @@ -559,8 +201,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { */ public String getCompactionStrategyClass() { log(" getCompactionStrategyClass()"); - return c.getStringValue( - "column_family/compaction_strategy/" + getCFName()); + return client.getStringValue("column_family/compaction_strategy/" + getCFName()); } /** @@ -569,8 +210,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public Map getCompressionParameters() { log(" getCompressionParameters()"); - return c.getMapStrValue( - "column_family/compression_parameters/" + getCFName()); + return client.getMapStrValue("column_family/compression_parameters/" + getCFName()); } /** @@ -584,8 +224,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { log(" setCompressionParameters(Map opts)"); MultivaluedMap queryParams = new MultivaluedHashMap(); queryParams.add("opts", APIClient.mapToString(opts)); - c.post("column_family/compression_parameters/" + getCFName(), - queryParams); + client.post("column_family/compression_parameters/" + getCFName(), queryParams); } /** @@ -596,60 +235,33 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { log(" setCrcCheckChance(double crcCheckChance)"); MultivaluedMap queryParams = new MultivaluedHashMap(); queryParams.add("check_chance", Double.toString(crcCheckChance)); - c.post("column_family/crc_check_chance/" + getCFName(), queryParams); + client.post("column_family/crc_check_chance/" + getCFName(), queryParams); } @Override public boolean isAutoCompactionDisabled() { log(" isAutoCompactionDisabled()"); - return c.getBooleanValue("column_family/autocompaction/" + getCFName()); + return client.getBooleanValue("column_family/autocompaction/" + getCFName()); } /** Number of tombstoned cells retreived during the last slicequery */ @Deprecated public double getTombstonesPerSlice() { log(" getTombstonesPerSlice()"); - return c.getDoubleValue(""); + return client.getDoubleValue(""); } /** Number of live cells retreived during the last slicequery */ @Deprecated public double getLiveCellsPerSlice() { log(" getLiveCellsPerSlice()"); - return c.getDoubleValue(""); + return client.getDoubleValue(""); } @Override public long estimateKeys() { log(" estimateKeys()"); - return c.getLongValue("column_family/estimate_keys/" + getCFName()); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#estimatedRowSizeHistogram - */ - @Deprecated - public long[] getEstimatedRowSizeHistogram() { - log(" getEstimatedRowSizeHistogram()"); - return metric.estimatedRowSizeHistogram.value(); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#estimatedColumnCountHistogram - */ - @Deprecated - public long[] getEstimatedColumnCountHistogram() { - log(" getEstimatedColumnCountHistogram()"); - return metric.estimatedColumnCountHistogram.value(); - } - - /** - * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#compressionRatio - */ - @Deprecated - public double getCompressionRatio() { - log(" getCompressionRatio()"); - return c.getDoubleValue("/column_family/metrics/compression_ratio/" + getCFName()); + return client.getLongValue("column_family/estimate_keys/" + getCFName()); } /** @@ -660,7 +272,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public List getBuiltIndexes() { log(" getBuiltIndexes()"); - return c.getListStrValue("column_family/built_indexes/" + getCFName()); + return client.getListStrValue("column_family/built_indexes/" + getCFName()); } /** @@ -674,8 +286,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { log(" getSSTablesForKey(String key)"); MultivaluedMap queryParams = new MultivaluedHashMap(); queryParams.add("key", key); - return c.getListStrValue("column_family/sstables/by_key/" + getCFName(), - queryParams); + return client.getListStrValue("column_family/sstables/by_key/" + getCFName(), queryParams); } /** @@ -685,7 +296,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public void loadNewSSTables() { log(" loadNewSSTables()"); - c.post("column_family/sstable/" + getCFName()); + client.post("column_family/sstable/" + getCFName()); } /** @@ -695,7 +306,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public int getUnleveledSSTables() { log(" getUnleveledSSTables()"); - return c.getIntValue("column_family/sstables/unleveled/" + getCFName()); + return client.getIntValue("column_family/sstables/unleveled/" + getCFName()); } /** @@ -706,8 +317,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public int[] getSSTableCountPerLevel() { log(" getSSTableCountPerLevel()"); - int[] res = c.getIntArrValue( - "column_family/sstables/per_level/" + getCFName()); + int[] res = client.getIntArrValue("column_family/sstables/per_level/" + getCFName()); if (res.length == 0) { // no sstable count // should return null @@ -725,7 +335,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public double getDroppableTombstoneRatio() { log(" getDroppableTombstoneRatio()"); - return c.getDoubleValue("column_family/droppable_ratio/" + getCFName()); + return client.getDoubleValue("column_family/droppable_ratio/" + getCFName()); } /** @@ -735,13 +345,13 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public long trueSnapshotsSize() { log(" trueSnapshotsSize()"); - return c.getLongValue("column_family/metrics/snapshots_size/" + getCFName()); + return client.getLongValue("column_family/metrics/snapshots_size/" + getCFName()); } public String getKeyspace() { return keyspace; } - + @Override public String getTableName() { log(" getTableName()"); @@ -752,20 +362,20 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { public void forceMajorCompaction(boolean splitOutput) throws ExecutionException, InterruptedException { log(" forceMajorCompaction(boolean) throws ExecutionException, InterruptedException"); MultivaluedMap queryParams = new MultivaluedHashMap(); - queryParams.putSingle("value", valueOf(splitOutput)); - c.post("column_family/major_compaction/" + getCFName(), queryParams); + queryParams.putSingle("value", valueOf(splitOutput)); + client.post("column_family/major_compaction/" + getCFName(), queryParams); } @Override public void setCompactionParametersJson(String options) { log(" setCompactionParametersJson"); - c.post("column_family/compaction_parameters/" + getCFName(), null, options, APPLICATION_JSON); + client.post("column_family/compaction_parameters/" + getCFName(), null, options, APPLICATION_JSON); } @Override public String getCompactionParametersJson() { log(" getCompactionParametersJson"); - return c.getStringValue("column_family/compaction_parameters/" + getCFName()); + return client.getStringValue("column_family/compaction_parameters/" + getCFName()); } @Override @@ -782,7 +392,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { String s = getCompactionParametersJson(); JsonObject o = createReader(new StringReader(s)).readObject(); HashMap res = new HashMap<>(); - for (Entry e : o.entrySet()) { + for (Entry e : o.entrySet()) { res.put(e.getKey(), e.getValue().toString()); } return res; @@ -797,7 +407,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { @Override public void compactionDiskSpaceCheck(boolean enable) { - // TODO Auto-generated method stub + // TODO Auto-generated method stub log(" compactionDiskSpaceCheck()"); } @@ -809,8 +419,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { } @Override - public CompositeData finishLocalSampling(String sampler, int count) - throws OpenDataException { + public CompositeData finishLocalSampling(String sampler, int count) throws OpenDataException { // TODO Auto-generated method stub log(" finishLocalSampling()"); return null;