diff --git a/src/main/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/main/java/org/apache/cassandra/db/ColumnFamilyStore.java index d256889..7294d74 100644 --- a/src/main/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/main/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -30,6 +30,8 @@ import java.util.concurrent.*; import javax.json.JsonArray; import javax.json.JsonObject; import javax.management.*; +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.OpenDataException; import javax.ws.rs.core.MultivaluedMap; import org.apache.cassandra.metrics.ColumnFamilyMetrics; @@ -341,8 +343,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { /** * 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()); } @@ -515,8 +517,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { */ public String getCompactionStrategyClass() { log(" getCompactionStrategyClass()"); - return c.getStringValue("column_family/compaction_strategy/" - + getCFName()); + return c.getStringValue( + "column_family/compaction_strategy/" + getCFName()); } /** @@ -524,8 +526,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { */ public Map getCompressionParameters() { log(" getCompressionParameters()"); - return c.getMapStrValue("column_family/compression_parameters/" - + getCFName()); + return c.getMapStrValue( + "column_family/compression_parameters/" + getCFName()); } /** @@ -623,8 +625,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { log(" getSSTablesForKey(String key)"); MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add("key", key); - return c.getListStrValue( - "column_family/sstables/by_key/" + getCFName(), queryParams); + return c.getListStrValue("column_family/sstables/by_key/" + getCFName(), + queryParams); } /** @@ -652,8 +654,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { */ public int[] getSSTableCountPerLevel() { log(" getSSTableCountPerLevel()"); - return c.getIntArrValue("column_family/sstables/per_level/" - + getCFName()); + return c.getIntArrValue( + "column_family/sstables/per_level/" + getCFName()); } /** @@ -680,4 +682,54 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean { return keyspace; } + @Override + public long getRangeCount() { + // TODO Auto-generated method stub + log("getRangeCount()"); + return c.getLongValue(""); + } + + @Override + public long getTotalRangeLatencyMicros() { + // TODO Auto-generated method stub + log("getTotalRangeLatencyMicros()"); + return c.getLongValue(""); + } + + @Override + public long[] getLifetimeRangeLatencyHistogramMicros() { + // TODO Auto-generated method stub + log("getLifetimeRangeLatencyHistogramMicros()"); + return c.getLongArrValue(""); + } + + @Override + public long[] getRecentRangeLatencyHistogramMicros() { + // TODO Auto-generated method stub + log("getRecentRangeLatencyHistogramMicros()"); + return c.getLongArrValue(""); + } + + @Override + public double getRecentRangeLatencyMicros() { + // TODO Auto-generated method stub + log("getRecentRangeLatencyMicros()"); + return c.getDoubleValue(""); + } + + @Override + public void beginLocalSampling(String sampler, int capacity) { + // TODO Auto-generated method stub + log("beginLocalSampling()"); + + } + + @Override + public CompositeData finishLocalSampling(String sampler, int count) + throws OpenDataException { + // TODO Auto-generated method stub + log("finishLocalSampling()"); + return null; + } + } diff --git a/src/main/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java b/src/main/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java index 1e9acc5..4df593b 100644 --- a/src/main/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java +++ b/src/main/java/org/apache/cassandra/db/ColumnFamilyStoreMBean.java @@ -21,6 +21,9 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.OpenDataException; + /** * The MBean interface for ColumnFamilyStore */ @@ -145,6 +148,41 @@ public interface ColumnFamilyStoreMBean @Deprecated public double getRecentWriteLatencyMicros(); + /** + * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#rangeLatency + * @return the number of range slice operations on this column family + */ + @Deprecated + public long getRangeCount(); + + /** + * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#rangeLatency + * @return total range slice latency (divide by getRangeCount() for average) + */ + @Deprecated + public long getTotalRangeLatencyMicros(); + + /** + * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#rangeLatency + * @return an array representing the latency histogram + */ + @Deprecated + public long[] getLifetimeRangeLatencyHistogramMicros(); + + /** + * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#rangeLatency + * @return an array representing the latency histogram + */ + @Deprecated + public long[] getRecentRangeLatencyHistogramMicros(); + + /** + * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#rangeLatency + * @return average latency per range slice operation since the last call + */ + @Deprecated + public double getRecentRangeLatencyMicros(); + /** * @see org.apache.cassandra.metrics.ColumnFamilyMetrics#pendingFlushes * @return the estimated number of tasks pending for this column family @@ -367,4 +405,15 @@ public interface ColumnFamilyStoreMBean * @return the size of SSTables in "snapshots" subdirectory which aren't live anymore */ public long trueSnapshotsSize(); + + /** + * begin sampling for a specific sampler with a given capacity. The cardinality may + * be larger than the capacity, but depending on the use case it may affect its accuracy + */ + public void beginLocalSampling(String sampler, int capacity); + + /** + * @return top count items for the sampler since beginLocalSampling was called + */ + public CompositeData finishLocalSampling(String sampler, int count) throws OpenDataException; } diff --git a/src/main/java/org/apache/cassandra/db/commitlog/CommitLog.java b/src/main/java/org/apache/cassandra/db/commitlog/CommitLog.java index 0f369f7..8cf51f9 100644 --- a/src/main/java/org/apache/cassandra/db/commitlog/CommitLog.java +++ b/src/main/java/org/apache/cassandra/db/commitlog/CommitLog.java @@ -58,8 +58,8 @@ public class CommitLog implements CommitLogMBean { private CommitLog() { MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); try { - mbs.registerMBean(this, new ObjectName( - "org.apache.cassandra.db:type=Commitlog")); + mbs.registerMBean(this, + new ObjectName("org.apache.cassandra.db:type=Commitlog")); } catch (Exception e) { throw new RuntimeException(e); } @@ -135,4 +135,39 @@ public class CommitLog implements CommitLogMBean { return new ArrayList(set); } + @Override + public String getArchiveCommand() { + // TODO Auto-generated method stub + log(" getArchiveCommand()"); + return c.getStringValue(""); + } + + @Override + public String getRestoreCommand() { + // TODO Auto-generated method stub + log(" getRestoreCommand()"); + return c.getStringValue(""); + } + + @Override + public String getRestoreDirectories() { + // TODO Auto-generated method stub + log(" getRestoreDirectories()"); + return c.getStringValue(""); + } + + @Override + public long getRestorePointInTime() { + // TODO Auto-generated method stub + log(" getRestorePointInTime()"); + return c.getLongValue(""); + } + + @Override + public String getRestorePrecision() { + // TODO Auto-generated method stub + log(" getRestorePrecision()"); + return c.getStringValue(""); + } + } diff --git a/src/main/java/org/apache/cassandra/db/commitlog/CommitLogMBean.java b/src/main/java/org/apache/cassandra/db/commitlog/CommitLogMBean.java index 49b82af..1ab3a91 100644 --- a/src/main/java/org/apache/cassandra/db/commitlog/CommitLogMBean.java +++ b/src/main/java/org/apache/cassandra/db/commitlog/CommitLogMBean.java @@ -45,6 +45,37 @@ public interface CommitLogMBean { @Deprecated public long getTotalCommitlogSize(); + /** + * Command to execute to archive a commitlog segment. Blank to disabled. + */ + public String getArchiveCommand(); + + /** + * Command to execute to make an archived commitlog live again + */ + public String getRestoreCommand(); + + /** + * Directory to scan the recovery files in + */ + public String getRestoreDirectories(); + + /** + * Restore mutations created up to and including this timestamp in GMT + * Format: yyyy:MM:dd HH:mm:ss (2012:04:31 20:43:12) + * + * Recovery will continue through the segment when the first client-supplied + * timestamp greater than this time is encountered, but only mutations less + * than or equal to this timestamp will be applied. + */ + public long getRestorePointInTime(); + + /** + * get precision of the timestamp used in the restore (MILLISECONDS, + * MICROSECONDS, ...) to determine if passed the restore point in time. + */ + public String getRestorePrecision(); + /** * Recover a single file. */ diff --git a/src/main/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java b/src/main/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java index 4ee3ff3..fcf514b 100644 --- a/src/main/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java +++ b/src/main/java/org/apache/cassandra/db/compaction/CompactionManagerMBean.java @@ -66,9 +66,7 @@ public interface CompactionManagerMBean { * keyspace/columnfamily. * * @param dataFiles - * a comma separated list of sstable file to compact. must - * contain keyspace and columnfamily name in path(for 2.1+) or - * file name itself. + * a comma separated list of sstable filename to compact */ public void forceUserDefinedCompaction(String dataFiles); diff --git a/src/main/java/org/apache/cassandra/gms/GossiperMBean.java b/src/main/java/org/apache/cassandra/gms/GossiperMBean.java index c4b244c..521fd21 100644 --- a/src/main/java/org/apache/cassandra/gms/GossiperMBean.java +++ b/src/main/java/org/apache/cassandra/gms/GossiperMBean.java @@ -27,6 +27,4 @@ public interface GossiperMBean public void unsafeAssassinateEndpoint(String address) throws UnknownHostException; - public void assassinateEndpoint(String address) throws UnknownHostException; - } \ No newline at end of file diff --git a/src/main/java/org/apache/cassandra/service/StorageProxy.java b/src/main/java/org/apache/cassandra/service/StorageProxy.java index b9c353d..c01a79d 100644 --- a/src/main/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/main/java/org/apache/cassandra/service/StorageProxy.java @@ -54,16 +54,16 @@ public class StorageProxy implements StorageProxyMBean { public static final String UNREACHABLE = "UNREACHABLE"; - private static final ClientRequestMetrics readMetrics = new ClientRequestMetrics("storage_proxy/metrics/read/", - "Read"); - private static final ClientRequestMetrics rangeMetrics = new ClientRequestMetrics("storage_proxy/metrics/range/", - "RangeSlice"); - private static final ClientRequestMetrics writeMetrics = new ClientRequestMetrics("storage_proxy/metrics/write/", - "Write"); - private static final CASClientRequestMetrics casWriteMetrics = new CASClientRequestMetrics("storage_proxy/metrics/cas_write/", - "CASWrite"); - private static final CASClientRequestMetrics casReadMetrics = new CASClientRequestMetrics("storage_proxy/metrics/cas_read/", - "CASRead"); + private static final ClientRequestMetrics readMetrics = new ClientRequestMetrics( + "storage_proxy/metrics/read/", "Read"); + private static final ClientRequestMetrics rangeMetrics = new ClientRequestMetrics( + "storage_proxy/metrics/range/", "RangeSlice"); + private static final ClientRequestMetrics writeMetrics = new ClientRequestMetrics( + "storage_proxy/metrics/write/", "Write"); + private static final CASClientRequestMetrics casWriteMetrics = new CASClientRequestMetrics( + "storage_proxy/metrics/cas_write/", "CASWrite"); + private static final CASClientRequestMetrics casReadMetrics = new CASClientRequestMetrics( + "storage_proxy/metrics/cas_read/", "CASRead"); private static final double CONCURRENT_SUBREQUESTS_MARGIN = 0.10; @@ -197,15 +197,15 @@ public class StorageProxy implements StorageProxyMBean { public Set getHintedHandoffEnabledByDC() { log(" getHintedHandoffEnabledByDC()"); - return c.getSetStringValue("storage_proxy/hinted_handoff_enabled_by_dc"); + return c.getSetStringValue( + "storage_proxy/hinted_handoff_enabled_by_dc"); } public void setHintedHandoffEnabled(boolean b) { log(" setHintedHandoffEnabled(boolean b)"); MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add("enable", Boolean.toString(b)); - c.post("storage_proxy/hinted_handoff_enabled", - queryParams); + c.post("storage_proxy/hinted_handoff_enabled", queryParams); } public void setHintedHandoffEnabledByDCList(String dcs) { @@ -289,8 +289,7 @@ public class StorageProxy implements StorageProxyMBean { log(" setCounterWriteRpcTimeout(Long timeoutInMillis)"); MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add("timeout", Long.toString(timeoutInMillis)); - c.post("storage_proxy/counter_write_rpc_timeout", - queryParams); + c.post("storage_proxy/counter_write_rpc_timeout", queryParams); } public Long getCasContentionTimeout() { @@ -302,8 +301,7 @@ public class StorageProxy implements StorageProxyMBean { log(" setCasContentionTimeout(Long timeoutInMillis)"); MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add("timeout", Long.toString(timeoutInMillis)); - c.post("storage_proxy/cas_contention_timeout", - queryParams); + c.post("storage_proxy/cas_contention_timeout", queryParams); } public Long getRangeRpcTimeout() { @@ -356,4 +354,19 @@ public class StorageProxy implements StorageProxyMBean { return c.getMapStringListStrValue("storage_proxy/schema_versions"); } + @Override + public void setNativeTransportMaxConcurrentConnections( + Long nativeTransportMaxConcurrentConnections) { + // TODO Auto-generated method stub + log(" setNativeTransportMaxConcurrentConnections()"); + + } + + @Override + public Long getNativeTransportMaxConcurrentConnections() { + // TODO Auto-generated method stub + log(" getNativeTransportMaxConcurrentConnections()"); + return c.getLongValue(""); + } + } diff --git a/src/main/java/org/apache/cassandra/service/StorageProxyMBean.java b/src/main/java/org/apache/cassandra/service/StorageProxyMBean.java index a058794..07efe03 100644 --- a/src/main/java/org/apache/cassandra/service/StorageProxyMBean.java +++ b/src/main/java/org/apache/cassandra/service/StorageProxyMBean.java @@ -130,6 +130,11 @@ public interface StorageProxyMBean { public void setTruncateRpcTimeout(Long timeoutInMillis); + public void setNativeTransportMaxConcurrentConnections( + Long nativeTransportMaxConcurrentConnections); + + public Long getNativeTransportMaxConcurrentConnections(); + public void reloadTriggerClasses(); public long getReadRepairAttempted(); diff --git a/src/main/java/org/apache/cassandra/service/StorageService.java b/src/main/java/org/apache/cassandra/service/StorageService.java index 867e4cf..b40e49b 100644 --- a/src/main/java/org/apache/cassandra/service/StorageService.java +++ b/src/main/java/org/apache/cassandra/service/StorageService.java @@ -45,15 +45,15 @@ import com.sun.jersey.core.util.MultivaluedMapImpl; * space. This token gets gossiped around. This class will also maintain * histograms of the load information of other nodes in the cluster. */ -public class StorageService extends NotificationBroadcasterSupport implements - StorageServiceMBean { +public class StorageService extends NotificationBroadcasterSupport + implements StorageServiceMBean { private static final java.util.logging.Logger logger = java.util.logging.Logger .getLogger(StorageService.class.getName()); private APIClient c = new APIClient(); - + private StorageMetrics metrics = new StorageMetrics(); - + public static final StorageService instance = new StorageService(); public static StorageService getInstance() { @@ -211,7 +211,8 @@ public class StorageService extends NotificationBroadcasterSupport implements * * @return mapping of ranges to end points */ - public Map, List> getRangeToEndpointMap(String keyspace) { + public Map, List> getRangeToEndpointMap( + String keyspace) { log(" getRangeToEndpointMap(String keyspace)"); return c.getMapListStrValue("/storage_service/range/" + keyspace); } @@ -257,8 +258,8 @@ public class StorageService extends NotificationBroadcasterSupport implements public Map, List> getPendingRangeToEndpointMap( String keyspace) { log(" getPendingRangeToEndpointMap(String keyspace)"); - return c.getMapListStrValue("/storage_service/pending_range/" - + keyspace); + return c.getMapListStrValue( + "/storage_service/pending_range/" + keyspace); } /** @@ -328,14 +329,15 @@ public class StorageService extends NotificationBroadcasterSupport implements * - key for which we need to find the endpoint return value - * the endpoint responsible for this key */ - public List getNaturalEndpoints(String keyspaceName, - String cf, String key) { + public List getNaturalEndpoints(String keyspaceName, String cf, + String key) { log(" getNaturalEndpoints(String keyspaceName, String cf, String key)"); MultivaluedMap queryParams = new MultivaluedMapImpl(); queryParams.add("cf", cf); queryParams.add("key", key); - return c.getListInetAddressValue("/storage_service/natural_endpoints/" - + keyspaceName, queryParams); + return c.getListInetAddressValue( + "/storage_service/natural_endpoints/" + keyspaceName, + queryParams); } public List getNaturalEndpoints(String keyspaceName, @@ -430,7 +432,7 @@ public class StorageService extends NotificationBroadcasterSupport implements */ public void forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, - InterruptedException { + InterruptedException { log(" forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException"); MultivaluedMap queryParams = new MultivaluedMapImpl(); APIClient.set_query_param(queryParams, "cf", @@ -444,13 +446,14 @@ public class StorageService extends NotificationBroadcasterSupport implements */ public int forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, - InterruptedException { + InterruptedException { log(" forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException"); MultivaluedMap queryParams = new MultivaluedMapImpl(); APIClient.set_query_param(queryParams, "cf", APIClient.join(columnFamilies)); - return c.getIntValue("/storage_service/keyspace_compaction/" - + keyspaceName, queryParams); + return c.getIntValue( + "/storage_service/keyspace_compaction/" + keyspaceName, + queryParams); } /** @@ -462,7 +465,7 @@ public class StorageService extends NotificationBroadcasterSupport implements */ public int scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, - ExecutionException, InterruptedException { + ExecutionException, InterruptedException { log(" scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException"); MultivaluedMap queryParams = new MultivaluedMapImpl(); APIClient.set_bool_query_param(queryParams, "disable_snapshot", @@ -480,15 +483,16 @@ public class StorageService extends NotificationBroadcasterSupport implements */ public int upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) - throws IOException, ExecutionException, InterruptedException { + throws IOException, ExecutionException, + InterruptedException { log(" upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException"); MultivaluedMap queryParams = new MultivaluedMapImpl(); APIClient.set_bool_query_param(queryParams, "exclude_current_version", excludeCurrentVersion); APIClient.set_query_param(queryParams, "cf", APIClient.join(columnFamilies)); - return c.getIntValue("/storage_service/keyspace_upgrade_sstables/" - + keyspaceName); + return c.getIntValue( + "/storage_service/keyspace_upgrade_sstables/" + keyspaceName); } /** @@ -501,7 +505,7 @@ public class StorageService extends NotificationBroadcasterSupport implements */ public void forceKeyspaceFlush(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, - InterruptedException { + InterruptedException { log(" forceKeyspaceFlush(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException"); MultivaluedMap queryParams = new MultivaluedMapImpl(); APIClient.set_query_param(queryParams, "cf", @@ -539,16 +543,16 @@ public class StorageService extends NotificationBroadcasterSupport implements public int forceRepairAsync(String keyspace, boolean isSequential, Collection dataCenters, Collection hosts, boolean primaryRange, boolean repairedAt, String... columnFamilies) - throws IOException { + throws IOException { log(" forceRepairAsync(String keyspace, boolean isSequential, Collection dataCenters, Collection hosts, boolean primaryRange, boolean repairedAt, String... columnFamilies) throws IOException"); return c.getIntValue(""); } @Deprecated public int forceRepairAsync(String keyspace, - RepairParallelism parallelismDegree, - Collection dataCenters, Collection hosts, - boolean primaryRange, boolean fullRepair, String... columnFamilies) { + RepairParallelism parallelismDegree, Collection dataCenters, + Collection hosts, boolean primaryRange, boolean fullRepair, + String... columnFamilies) { log(" forceRepairAsync(String keyspace, RepairParallelism parallelismDegree, Collection dataCenters, Collection hosts, boolean primaryRange, boolean fullRepair, String... columnFamilies)"); return c.getIntValue(""); } @@ -699,8 +703,8 @@ public class StorageService extends NotificationBroadcasterSupport implements * makes node unavailable for writes, flushes memtables and replays * commitlog. */ - public void drain() throws IOException, InterruptedException, - ExecutionException { + public void drain() + throws IOException, InterruptedException, ExecutionException { log(" drain() throws IOException, InterruptedException, ExecutionException"); c.post("/storage_service/drain"); } @@ -946,7 +950,8 @@ public class StorageService extends NotificationBroadcasterSupport implements */ public String bulkLoadAsync(String directory) { log(" bulkLoadAsync(String directory)"); - return c.getStringValue("/storage_service/bulk_load_async/" + directory); + return c.getStringValue( + "/storage_service/bulk_load_async/" + directory); } public void rescheduleFailedDeletions() { @@ -1104,7 +1109,9 @@ public class StorageService extends NotificationBroadcasterSupport implements c.post("/storage_service/batch_size_failure_threshold", queryParams); } - /** Sets the hinted handoff throttle in kb per second, per delivery thread. */ + /** + * Sets the hinted handoff throttle in kb per second, per delivery thread. + */ public void setHintedHandoffThrottleInKB(int throttleInKB) { log(" setHintedHandoffThrottleInKB(int throttleInKB)"); MultivaluedMap queryParams = new MultivaluedMapImpl(); @@ -1112,4 +1119,48 @@ public class StorageService extends NotificationBroadcasterSupport implements c.post("/storage_service/hinted_handoff", queryParams); } + + @Override + public void takeMultipleColumnFamilySnapshot(String tag, + String... columnFamilyList) throws IOException { + // TODO Auto-generated method stub + log(" takeMultipleColumnFamilySnapshot"); + } + + @Override + public int scrub(boolean disableSnapshot, boolean skipCorrupted, + boolean checkData, String keyspaceName, String... columnFamilies) + throws IOException, ExecutionException, + InterruptedException { + // TODO Auto-generated method stub + log(" scrub()"); + return c.getIntValue(""); + } + + @Override + public int forceRepairAsync(String keyspace, int parallelismDegree, + Collection dataCenters, Collection hosts, + boolean primaryRange, boolean fullRepair, + String... columnFamilies) { + // TODO Auto-generated method stub + log(" forceRepairAsync()"); + return c.getIntValue(""); + } + + @Override + public int forceRepairRangeAsync(String beginToken, String endToken, + String keyspaceName, int parallelismDegree, + Collection dataCenters, Collection hosts, + boolean fullRepair, String... columnFamilies) { + // TODO Auto-generated method stub + log(" forceRepairRangeAsync()"); + return c.getIntValue(""); + } + + @Override + public double getTracingProbability() { + // TODO Auto-generated method stub + log(" getTracingProbability()"); + return c.getDoubleValue(""); + } } diff --git a/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java index 07bdc0e..77709ec 100644 --- a/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java +++ b/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java @@ -17,8 +17,6 @@ */ package org.apache.cassandra.service; -import org.apache.cassandra.repair.RepairParallelism; - import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; @@ -127,7 +125,8 @@ public interface StorageServiceMBean extends NotificationEmitter { * * @return mapping of ranges to end points */ - public Map, List> getRangeToEndpointMap(String keyspace); + public Map, List> getRangeToEndpointMap( + String keyspace); /** * Retrieve a map of range to rpc addresses that describe the ring topology @@ -207,8 +206,8 @@ public interface StorageServiceMBean extends NotificationEmitter { * - key for which we need to find the endpoint return value - * the endpoint responsible for this key */ - public List getNaturalEndpoints(String keyspaceName, - String cf, String key); + public List getNaturalEndpoints(String keyspaceName, String cf, + String key); public List getNaturalEndpoints(String keyspaceName, ByteBuffer key); @@ -239,6 +238,19 @@ public interface StorageServiceMBean extends NotificationEmitter { public void takeColumnFamilySnapshot(String keyspaceName, String columnFamilyName, String tag) throws IOException; + /** + * Takes the snapshot of a multiple column family from different keyspaces. + * A snapshot name must be specified. + * + * @param tag + * the tag given to the snapshot; may not be null or empty + * @param columnFamilyList + * list of columnfamily from different keyspace in the form of + * ks1.cf1 ks2.cf2 + */ + public void takeMultipleColumnFamilySnapshot(String tag, + String... columnFamilyList) throws IOException; + /** * Remove the snapshot with the given name from the given keyspaces. If no * tag is specified we will remove all snapshots. @@ -265,14 +277,14 @@ public interface StorageServiceMBean extends NotificationEmitter { */ public void forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, - InterruptedException; + InterruptedException; /** * Trigger a cleanup of keys on a single keyspace */ public int forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, - InterruptedException; + InterruptedException; /** * Scrub (deserialize + reserialize at the latest version, skipping bad rows @@ -281,9 +293,15 @@ public interface StorageServiceMBean extends NotificationEmitter { * * Scrubbed CFs will be snapshotted first, if disableSnapshot is false */ + @Deprecated public int scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, - ExecutionException, InterruptedException; + ExecutionException, InterruptedException; + + public int scrub(boolean disableSnapshot, boolean skipCorrupted, + boolean checkData, String keyspaceName, String... columnFamilies) + throws IOException, ExecutionException, + InterruptedException; /** * Rewrite all sstables to the latest version. Unlike scrub, it doesn't skip @@ -291,7 +309,8 @@ public interface StorageServiceMBean extends NotificationEmitter { */ public int upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) - throws IOException, ExecutionException, InterruptedException; + throws IOException, ExecutionException, + InterruptedException; /** * Flush all memtables for the given column families, or all columnfamilies @@ -303,52 +322,69 @@ public interface StorageServiceMBean extends NotificationEmitter { */ public void forceKeyspaceFlush(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, - InterruptedException; + InterruptedException; /** * Invoke repair asynchronously. You can track repair progress by * subscribing JMX notification sent from this StorageServiceMBean. * Notification format is: type: "repair" userObject: int array of length 2, - * [0]=command number, [1]=ordinal of AntiEntropyService.Status + * [0]=command number, [1]=ordinal of ActiveRepairService.Status * - * @param keyspace - * Keyspace name to repair. Should not be null. - * @param options - * repair option. * @return Repair command number, or 0 if nothing to repair */ - public int repairAsync(String keyspace, Map options); - - @Deprecated public int forceRepairAsync(String keyspace, boolean isSequential, Collection dataCenters, Collection hosts, boolean primaryRange, boolean repairedAt, String... columnFamilies) - throws IOException; + throws IOException; - @Deprecated - public int forceRepairAsync(String keyspace, - RepairParallelism parallelismDegree, + /** + * Invoke repair asynchronously. You can track repair progress by + * subscribing JMX notification sent from this StorageServiceMBean. + * Notification format is: type: "repair" userObject: int array of length 2, + * [0]=command number, [1]=ordinal of ActiveRepairService.Status + * + * @param parallelismDegree + * 0: sequential, 1: parallel, 2: DC parallel + * @return Repair command number, or 0 if nothing to repair + */ + public int forceRepairAsync(String keyspace, int parallelismDegree, Collection dataCenters, Collection hosts, boolean primaryRange, boolean fullRepair, String... columnFamilies); - @Deprecated + /** + * Same as forceRepairAsync, but handles a specified range + */ public int forceRepairRangeAsync(String beginToken, String endToken, String keyspaceName, boolean isSequential, Collection dataCenters, Collection hosts, boolean repairedAt, String... columnFamilies) throws IOException; - @Deprecated + /** + * Same as forceRepairAsync, but handles a specified range + * + * @param parallelismDegree + * 0: sequential, 1: parallel, 2: DC parallel + */ public int forceRepairRangeAsync(String beginToken, String endToken, - String keyspaceName, RepairParallelism parallelismDegree, + String keyspaceName, int parallelismDegree, Collection dataCenters, Collection hosts, boolean fullRepair, String... columnFamilies); - @Deprecated + /** + * Invoke repair asynchronously. You can track repair progress by + * subscribing JMX notification sent from this StorageServiceMBean. + * Notification format is: type: "repair" userObject: int array of length 2, + * [0]=command number, [1]=ordinal of ActiveRepairService.Status + * + * @return Repair command number, or 0 if nothing to repair + */ public int forceRepairAsync(String keyspace, boolean isSequential, boolean isLocal, boolean primaryRange, boolean fullRepair, String... columnFamilies); - @Deprecated + /** + * Same as forceRepairAsync, but handles a specified range + */ public int forceRepairRangeAsync(String beginToken, String endToken, String keyspaceName, boolean isSequential, boolean isLocal, boolean repairedAt, String... columnFamilies); @@ -424,8 +460,8 @@ public interface StorageServiceMBean extends NotificationEmitter { * makes node unavailable for writes, flushes memtables and replays * commitlog. */ - public void drain() throws IOException, InterruptedException, - ExecutionException; + public void drain() + throws IOException, InterruptedException, ExecutionException; /** * Truncates (deletes) the given columnFamily from the provided keyspace. @@ -460,8 +496,6 @@ public interface StorageServiceMBean extends NotificationEmitter { public List getKeyspaces(); - public List getNonSystemKeyspaces(); - /** * Change endpointsnitch class and dynamic-ness (and dynamic attributes) at * runtime @@ -600,7 +634,7 @@ public interface StorageServiceMBean extends NotificationEmitter { /** * Returns the configured tracing probability. */ - public double getTraceProbability(); + public double getTracingProbability(); void disableAutoCompaction(String ks, String... columnFamilies) throws IOException; @@ -628,12 +662,8 @@ public interface StorageServiceMBean extends NotificationEmitter { /** Sets the threshold for abandoning queries with many tombstones */ public void setTombstoneFailureThreshold(int tombstoneDebugThreshold); - /** Returns the threshold for rejecting queries due to a large batch size */ - public int getBatchSizeFailureThreshold(); - - /** Sets the threshold for rejecting queries due to a large batch size */ - public void setBatchSizeFailureThreshold(int batchSizeDebugThreshold); - - /** Sets the hinted handoff throttle in kb per second, per delivery thread. */ + /** + * Sets the hinted handoff throttle in kb per second, per delivery thread. + */ public void setHintedHandoffThrottleInKB(int throttleInKB); }