Merge branch 'cassandra-1.2' into cassandra-2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cfa0e580 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cfa0e580 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cfa0e580 Branch: refs/heads/cassandra-2.0 Commit: cfa0e580eaa9f30f63bfa185386d405cf805d808 Parents: 16bb898 e983ef1 Author: Dave Brosius <dbros...@mebigfatguy.com> Authored: Fri Oct 18 21:54:16 2013 -0400 Committer: Dave Brosius <dbros...@mebigfatguy.com> Committed: Fri Oct 18 21:54:16 2013 -0400 ---------------------------------------------------------------------- NEWS.txt | 15 ++++++++++----- .../org/apache/cassandra/service/StorageService.java | 12 ++++++------ 2 files changed, 16 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/cfa0e580/NEWS.txt ---------------------------------------------------------------------- diff --cc NEWS.txt index 4bffa77,d803f02..9d90ea7 --- a/NEWS.txt +++ b/NEWS.txt @@@ -14,115 -14,31 +14,120 @@@ restore snapshots created with the prev using the provided 'sstableupgrade' tool. -1.2.11 -====== +2.0.2 +===== -Features --------- - - Added a new consistenct level, LOCAL_ONE, that forces all CL.ONE operations to - execute only in the local datacenter. - - New replace_address to supplant the (now removed) replace_token and - replace_node workflows to replace a dead node in place. Works like the - old options, but takes the IP address of the node to be replaced. +New features +------------ + - Speculative retry defaults to 99th percentile + (See blog post at http://www.datastax.com/dev/blog/rapid-read-protection-in-cassandra-2-0-2) + - Configurable metrics reporting + (see conf/metrics-reporter-config-sample.yaml) + - Compaction history and stats are now saved to system keyspace + (system.compaction_history table). You can access historiy via + new 'nodetool compactionhistory' command or CQL. - - Added a new consistenct level, LOCAL_ONE, that forces all CL.ONE operations to - execute only in the local datacenter. - - New replace_address to supplant the (now removed) replace_token and - replace_node workflows to replace a dead node in place. Works like the - old options, but takes the IP address of the node to be replaced. +2.0.1 +===== Upgrading --------- - - ColumnFamilyMetrics#sstablesPerReadHistogram switched from uniform sampling - to biased-to-last-five-minutes sampling. + - The default memtable allocation has changed from 1/3 of heap to 1/4 + of heap. Also, default (single-partition) read and write timeouts + have been reduced from 10s to 5s and 2s, respectively. -1.2.10 -====== +2.0.0 +===== Upgrading --------- - - Nothing specific to this release, but please see 1.2.9 if you are upgrading - from a previous version. + - Java 7 is now *required*! + - Upgrading is ONLY supported from Cassandra 1.2.9 or later. This + goes for sstable compatibility as well as network. When + upgrading from an earlier release, upgrade to 1.2.9 first and + run upgradesstables before proceeding to 2.0. + - CAS and new features in CQL such as DROP COLUMN assume that cell + timestamps are microseconds-since-epoch. Do not use these + features if you are using client-specified timestamps with some + other source. + - Replication and strategy options do not accept unknown options anymore. + This was already the case for CQL3 in 1.2 but this is now the case for + thrift too. + - auto_bootstrap of a single-token node with no initial_token will + now pick a random token instead of bisecting an existing token + range. We recommend upgrading to vnodes; failing that, we + recommend specifying initial_token. + - reduce_cache_sizes_at, reduce_cache_capacity_to, and + flush_largest_memtables_at options have been removed from cassandra.yaml. + - CacheServiceMBean.reduceCacheSizes() has been removed. + Use CacheServiceMBean.set{Key,Row}CacheCapacityInMB() instead. + - authority option in cassandra.yaml has been deprecated since 1.2.0, + but it has been completely removed in 2.0. Please use 'authorizer' option. + - ASSUME command has been removed from cqlsh. Use CQL3 blobAsType() and + typeAsBlob() conversion functions instead. + See https://cassandra.apache.org/doc/cql3/CQL.html#blobFun for details. + - Inputting blobs as string constants is now fully deprecated in + favor of blob constants. Make sure to update your applications to use + the new syntax while you are still on 1.2 (which supports both string + and blob constants for blob input) before upgrading to 2.0. + - index_interval is now moved to ColumnFamily property. You can change value + with ALTER TABLE ... WITH statement and SSTables written after that will + have new value. When upgrading, Cassandra will pick up the value defined in + cassanda.yaml as the default for existing ColumnFamilies, until you explicitly + set the value for those. + - The deprecated native_transport_min_threads option has been removed in + Cassandra.yaml. +Operations +---------- + - VNodes are enabled by default in cassandra.yaml. initial_token + for non-vnode deployments has been removed from the example + yaml, but is still respected if specified. + - Major compactions, cleanup, scrub, and upgradesstables will interrupt + any in-progress compactions (but not repair validations) when invoked. + - Disabling autocompactions by setting min/max compaction threshold to 0 + has been deprecated, instead, use the nodetool commands 'disableautocompaction' + and 'enableautocompaction' or set the compaction strategy option enabled = false + - ALTER TABLE DROP has been reenabled for CQL3 tables and has new semantics now. + See https://cassandra.apache.org/doc/cql3/CQL.html#alterTableStmt and + https://issues.apache.org/jira/browse/CASSANDRA-3919 for details. + - CAS uses gc_grace_seconds to determine how long to keep unused paxos + state around for, or a minimum of three hours. + - A new hints created metric is tracked per target, replacing countPendingHints + - After performance testing for CASSANDRA-5727, the default LCS filesize + has been changed from 5MB to 160MB. + - cqlsh DESCRIBE SCHEMA no longer outputs the schema of system_* keyspaces; + use DESCRIBE FULL SCHEMA if you need the schema of system_* keyspaces. + - CQL2 has been deprecated, and will be removed entirely in 2.2. See + CASSANDRA-5918 for details. + - Commit log archiver now assumes the client time stamp to be in microsecond + precision, during restore. Please refer to commitlog_archiving.properties. + + +Features +-------- + - Lightweight transactions + (http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0) + - Alias support has been added to CQL3 SELECT statement. Refer to + CQL3 documentation (http://cassandra.apache.org/doc/cql3/CQL.html) for details. + - JEMalloc support (see memory_allocator in cassandra.yaml) + - Experimental triggers support. See examples/ for how to use. "Experimental" + means "tied closely to internal data structures; we plan to decouple this in + the future, which will probably break triggers written against this initial + API." + - Numerous improvements to CQL3 and a new version of the native protocol. See + http://www.datastax.com/dev/blog/cql-in-cassandra-2-0 for details. + ++1.2.11 ++====== ++ ++Features ++-------- ++ - Added a new consistenct level, LOCAL_ONE, that forces all CL.ONE operations to ++ execute only in the local datacenter. ++ - New replace_address to supplant the (now removed) replace_token and ++ replace_node workflows to replace a dead node in place. Works like the ++ old options, but takes the IP address of the node to be replaced. 1.2.9 ===== http://git-wip-us.apache.org/repos/asf/cassandra/blob/cfa0e580/src/java/org/apache/cassandra/service/StorageService.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/service/StorageService.java index 4916cbd,bde54a7..e45fb71 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@@ -396,19 -404,20 +395,20 @@@ public class StorageService extends Not { if (Gossiper.instance.getEndpointStateForEndpoint(DatabaseDescriptor.getReplaceAddress()).getApplicationState(ApplicationState.TOKENS) == null) throw new RuntimeException("Could not find tokens for " + DatabaseDescriptor.getReplaceAddress() + " to replace"); - tokens = TokenSerializer.deserialize(getPartitioner(), new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(DatabaseDescriptor.getReplaceAddress(), ApplicationState.TOKENS)))); + Collection<Token> tokens = TokenSerializer.deserialize(getPartitioner(), new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(DatabaseDescriptor.getReplaceAddress(), ApplicationState.TOKENS)))); + - SystemTable.setLocalHostId(hostId); // use the replacee's host Id as our own so we receive hints, etc ++ SystemKeyspace.setLocalHostId(hostId); // use the replacee's host Id as our own so we receive hints, etc + MessagingService.instance().shutdown(); + Gossiper.instance.resetEndpointStateMap(); // clean up since we have what we need + return tokens; } catch (IOException e) { throw new RuntimeException(e); } - SystemKeyspace.setLocalHostId(hostId); // use the replacee's host Id as our own so we receive hints, etc - MessagingService.instance().shutdown(); - Gossiper.instance.resetEndpointStateMap(); // clean up since we have what we need - return tokens; } - public synchronized void initClient() throws IOException, ConfigurationException + public synchronized void initClient() throws ConfigurationException { // We don't wait, because we're going to actually try to work on initClient(0);