Merge branch 'cassandra-2.1' into cassandra-2.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e41fa341 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e41fa341 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e41fa341 Branch: refs/heads/cassandra-3.3 Commit: e41fa3419195a1b512efa478135d82d3295de5cd Parents: 202cf9b 6d6d189 Author: Sylvain Lebresne <sylv...@datastax.com> Authored: Thu Jan 7 12:03:26 2016 +0100 Committer: Sylvain Lebresne <sylv...@datastax.com> Committed: Thu Jan 7 12:03:26 2016 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + NEWS.txt | 7 ++++ conf/cassandra.yaml | 3 +- .../org/apache/cassandra/config/Config.java | 2 +- .../cassandra/service/StorageService.java | 12 +++++++ .../cassandra/service/StorageServiceMBean.java | 3 ++ .../org/apache/cassandra/tools/BulkLoader.java | 12 ++++++- .../org/apache/cassandra/tools/NodeProbe.java | 15 +++++++- .../org/apache/cassandra/tools/NodeTool.java | 2 ++ .../nodetool/GetInterDCStreamThroughput.java | 33 +++++++++++++++++ .../nodetool/SetInterDCStreamThroughput.java | 37 ++++++++++++++++++++ 11 files changed, 123 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index b12f593,14c5ee6..90d990e --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,20 -1,8 +1,21 @@@ -2.1.13 +2.2.5 + * Enable GC logging by default (CASSANDRA-10140) + * Optimize pending range computation (CASSANDRA-9258) + * Skip commit log and saved cache directories in SSTable version startup check (CASSANDRA-10902) + * drop/alter user should be case sensitive (CASSANDRA-10817) + * jemalloc detection fails due to quoting issues in regexv (CASSANDRA-10946) + * Support counter-columns for native aggregates (sum,avg,max,min) (CASSANDRA-9977) + * (cqlsh) show correct column names for empty result sets (CASSANDRA-9813) + * Add new types to Stress (CASSANDRA-9556) + * Add property to allow listening on broadcast interface (CASSANDRA-9748) + * Fix regression in split size on CqlInputFormat (CASSANDRA-10835) + * Better handling of SSL connection errors inter-node (CASSANDRA-10816) + * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474) + * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761) +Merged from 2.1: + * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708) * Match cassandra-loader options in COPY FROM (CASSANDRA-9303) * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309) - * Fix the way we replace sstables after anticompaction (CASSANDRA-10831) * cqlsh fails to decode utf-8 characters for text typed columns (CASSANDRA-10875) * Log error when stream session fails (CASSANDRA-9294) * Fix bugs in commit log archiving startup behavior (CASSANDRA-10593) http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/NEWS.txt ---------------------------------------------------------------------- diff --cc NEWS.txt index 8cbe4f7,845801d..f26fe3b --- a/NEWS.txt +++ b/NEWS.txt @@@ -13,29 -13,23 +13,36 @@@ restore snapshots created with the prev 'sstableloader' tool. You can upgrade the file format of your snapshots using the provided 'sstableupgrade' tool. -2.1.13 -====== +2.2.4 +===== -New features ------------- - - New options for cqlsh COPY FROM and COPY TO, see CASSANDRA-9303 for details. +Deprecation +----------- + - Pig support has been deprecated, and will be removed in 3.0. + Please see CASSANDRA-10542 for more details. + - Configuration parameter memory_allocator in cassandra.yaml has been deprecated + and will be removed in 3.0.0. As mentioned below for 2.2.0, jemalloc is + automatically preloaded on Unix platforms. + +Operations +---------- + - Switching data center or racks is no longer an allowed operation on a node + which has data. Instead, the node will need to be decommissioned and + rebootstrapped. If moving from the SimpleSnitch, make sure that the data + center and rack containing all current nodes is named "datacenter1" and + "rack1". To override this behaviour use -Dcassandra.ignore_rack=true and/or + -Dcassandra.ignore_dc=true. + - Reloading the configuration file of GossipingPropertyFileSnitch has been disabled. + - GC logging is now enabled by default (but you can disable it if you want by + commenting the relevant lines of the cassandra-env file). + Upgrading + --------- + - The default for the inter-DC stream throughput setting + (inter_dc_stream_throughput_outbound_megabits_per_sec in cassandra.yaml) is + the same than the one for intra-DC one (200Mbps) instead of being unlimited. + Having it unlimited was never intended and was a bug. + -2.1.12 -====== - New features ------------ - Time windows in DTCS are now limited to 1 day by default to be able to http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/conf/cassandra.yaml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/src/java/org/apache/cassandra/config/Config.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/src/java/org/apache/cassandra/service/StorageService.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/src/java/org/apache/cassandra/service/StorageServiceMBean.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/service/StorageServiceMBean.java index b7784d6,8fa2433..7c5cd0a --- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java +++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java @@@ -482,8 -470,14 +482,11 @@@ public interface StorageServiceMBean ex public void joinRing() throws IOException; public boolean isJoined(); - @Deprecated - public int getExceptionCount(); - public void setStreamThroughputMbPerSec(int value); public int getStreamThroughputMbPerSec(); + + public void setInterDCStreamThroughputMbPerSec(int value); + public int getInterDCStreamThroughputMbPerSec(); public int getCompactionThroughputMbPerSec(); public void setCompactionThroughputMbPerSec(int value); http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/src/java/org/apache/cassandra/tools/BulkLoader.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/tools/BulkLoader.java index 73194a1,37317d5..8a85c54 --- a/src/java/org/apache/cassandra/tools/BulkLoader.java +++ b/src/java/org/apache/cassandra/tools/BulkLoader.java @@@ -51,7 -59,10 +51,8 @@@ public class BulkLoade private static final String USER_OPTION = "username"; private static final String PASSWD_OPTION = "password"; private static final String THROTTLE_MBITS = "throttle"; + private static final String INTER_DC_THROTTLE_MBITS = "inter-dc-throttle"; - private static final String TRANSPORT_FACTORY = "transport-factory"; - /* client encryption options */ private static final String SSL_TRUSTSTORE = "truststore"; private static final String SSL_TRUSTSTORE_PW = "truststore-password"; @@@ -308,8 -403,10 +310,9 @@@ public String user; public String passwd; public int throttle = 0; + public int interDcThrottle = 0; public int storagePort; public int sslStoragePort; - public ITransportFactory transportFactory = new TFramedTransportFactory(); public EncryptionOptions encOptions = new EncryptionOptions.ClientEncryptionOptions(); public int connectionsPerHost = 1; public EncryptionOptions.ServerEncryptionOptions serverEncOptions = new EncryptionOptions.ServerEncryptionOptions(); @@@ -509,10 -663,12 +518,11 @@@ options.addOption(null, NOPROGRESS_OPTION, "don't display progress"); options.addOption("i", IGNORE_NODES_OPTION, "NODES", "don't stream to this (comma separated) list of nodes"); options.addOption("d", INITIAL_HOST_ADDRESS_OPTION, "initial hosts", "Required. try to connect to these hosts (comma separated) initially for ring information"); - options.addOption("p", RPC_PORT_OPTION, "rpc port", "port used for rpc (default 9160)"); + options.addOption("p", NATIVE_PORT_OPTION, "rpc port", "port used for native connection (default 9042)"); options.addOption("t", THROTTLE_MBITS, "throttle", "throttle speed in Mbits (default unlimited)"); + options.addOption("idct", INTER_DC_THROTTLE_MBITS, "inter-dc-throttle", "inter-datacenter throttle speed in Mbits (default unlimited)"); options.addOption("u", USER_OPTION, "username", "username for cassandra authentication"); options.addOption("pw", PASSWD_OPTION, "password", "password for cassandra authentication"); - options.addOption("tf", TRANSPORT_FACTORY, "transport factory", "Fully-qualified ITransportFactory class name for creating a connection to cassandra"); options.addOption("cph", CONNECTIONS_PER_HOST, "connectionsPerHost", "number of concurrent connections-per-host."); // ssl connection-related options options.addOption("ts", SSL_TRUSTSTORE, "TRUSTSTORE", "Client SSL: full path to truststore"); http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/src/java/org/apache/cassandra/tools/NodeProbe.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/tools/NodeProbe.java index dbc0357,1ad1147..93804a8 --- a/src/java/org/apache/cassandra/tools/NodeProbe.java +++ b/src/java/org/apache/cassandra/tools/NodeProbe.java @@@ -941,11 -983,14 +941,19 @@@ public class NodeProbe implements AutoC return ssProxy.getStreamThroughputMbPerSec(); } - public double getTraceProbability() {return ssProxy.getTraceProbability();} + public int getInterDCStreamThroughput() + { + return ssProxy.getInterDCStreamThroughputMbPerSec(); + } + ++ public double getTraceProbability() ++ { ++ return ssProxy.getTraceProbability(); ++ } + public int getExceptionCount() { - return ssProxy.getExceptionCount(); + return (int)StorageMetrics.exceptions.getCount(); } public Map<String, Integer> getDroppedMessages() http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/src/java/org/apache/cassandra/tools/NodeTool.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/tools/NodeTool.java index fcb6ed0,819049e..966b785 --- a/src/java/org/apache/cassandra/tools/NodeTool.java +++ b/src/java/org/apache/cassandra/tools/NodeTool.java @@@ -80,7 -138,7 +80,8 @@@ public class NodeToo GetCompactionThreshold.class, GetCompactionThroughput.class, GetStreamThroughput.class, + GetTraceProbability.class, + GetInterDCStreamThroughput.class, GetEndpoints.class, GetSSTables.class, GossipInfo.class, http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/src/java/org/apache/cassandra/tools/nodetool/GetInterDCStreamThroughput.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/tools/nodetool/GetInterDCStreamThroughput.java index 0000000,0000000..4c354c0 new file mode 100644 --- /dev/null +++ b/src/java/org/apache/cassandra/tools/nodetool/GetInterDCStreamThroughput.java @@@ -1,0 -1,0 +1,33 @@@ ++/* ++ * 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.tools.nodetool; ++ ++import io.airlift.command.Command; ++ ++import org.apache.cassandra.tools.NodeProbe; ++import org.apache.cassandra.tools.NodeTool.NodeToolCmd; ++ ++@Command(name = "getinterdcstreamthroughput", description = "Print the Mb/s throughput cap for inter-datacenter streaming in the system") ++public class GetInterDCStreamThroughput extends NodeToolCmd ++{ ++ @Override ++ public void execute(NodeProbe probe) ++ { ++ System.out.println("Current inter-datacenter stream throughput: " + probe.getInterDCStreamThroughput() + " Mb/s"); ++ } ++} http://git-wip-us.apache.org/repos/asf/cassandra/blob/e41fa341/src/java/org/apache/cassandra/tools/nodetool/SetInterDCStreamThroughput.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/tools/nodetool/SetInterDCStreamThroughput.java index 0000000,0000000..41ce43a new file mode 100644 --- /dev/null +++ b/src/java/org/apache/cassandra/tools/nodetool/SetInterDCStreamThroughput.java @@@ -1,0 -1,0 +1,37 @@@ ++/* ++ * 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.tools.nodetool; ++ ++import io.airlift.command.Arguments; ++import io.airlift.command.Command; ++ ++import org.apache.cassandra.tools.NodeProbe; ++import org.apache.cassandra.tools.NodeTool.NodeToolCmd; ++ ++@Command(name = "setinterdcstreamthroughput", description = "Set the Mb/s throughput cap for inter-datacenter streaming in the system, or 0 to disable throttling") ++public class SetInterDCStreamThroughput extends NodeToolCmd ++{ ++ @Arguments(title = "inter_dc_stream_throughput", usage = "<value_in_mb>", description = "Value in Mb, 0 to disable throttling", required = true) ++ private Integer interDCStreamThroughput = null; ++ ++ @Override ++ public void execute(NodeProbe probe) ++ { ++ probe.setInterDCStreamThroughput(interDCStreamThroughput); ++ } ++}