You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2012/02/05 22:39:15 UTC
[1/5] git commit: Merge branch 'cassandra-1.0' into cassandra-1.1
Updated Branches:
refs/heads/cassandra-1.1 cbac7af79 -> e36b2130f
Merge branch 'cassandra-1.0' into cassandra-1.1
Conflicts:
NEWS.txt
src/java/org/apache/cassandra/config/DatabaseDescriptor.java
src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
src/java/org/apache/cassandra/service/MigrationManager.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e36b2130
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e36b2130
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e36b2130
Branch: refs/heads/cassandra-1.1
Commit: e36b2130ff2123fa1ebc3627d026407956611d84
Parents: cbac7af a35f878
Author: Sylvain Lebresne <sy...@riptano.com>
Authored: Sun Feb 5 22:38:45 2012 +0100
Committer: Sylvain Lebresne <sy...@riptano.com>
Committed: Sun Feb 5 22:38:45 2012 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
NEWS.txt | 8 ++++++++
conf/cassandra.yaml | 7 +++++++
src/java/org/apache/cassandra/config/Config.java | 2 ++
.../cassandra/config/DatabaseDescriptor.java | 5 +++++
.../cassandra/net/OutboundTcpConnection.java | 5 +++++
.../cassandra/net/OutboundTcpConnectionPool.java | 2 +-
.../apache/cassandra/streaming/FileStreamTask.java | 1 +
.../cassandra/streaming/IncomingStreamReader.java | 1 +
9 files changed, 31 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e36b2130/CHANGES.txt
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e36b2130/NEWS.txt
----------------------------------------------------------------------
diff --cc NEWS.txt
index 8fca1cd,e36b9e8..fc401b8
--- a/NEWS.txt
+++ b/NEWS.txt
@@@ -8,69 -8,13 +8,77 @@@ upgrade, just in case you need to roll
(Cassandra version X + 1 will always be able to read data files created
by version X, but the inverse is not necessarily the case.)
+
+1.1
+===
+
+Upgrading
+---------
+ - The KsDef.replication_factor field (deprecated since 0.8) has
+ been removed. Older clients will need to be updated to be able
+ to continue to created and update keyspaces.
+ - If you are running a multi datacenter setup, you should upgrade to
+ the latest 1.0.x (or 0.8.x) release before upgrading. Versions
+ 0.8.8 and 1.0.3-1.0.5 generate cross-dc forwarding that is incompatible
+ with 1.1.
+ - EACH_QUORUM ConsistencyLevel is only supported for writes and will now
+ throw an InvalidRequestException when used for reads. (Previous
+ versions would silently perform a LOCAL_QUORUM read instead.)
+ - ANY ConsistencyLevel is only supported for writes and will now
+ throw an InvalidRequestException when used for reads. (Previous
+ versions would silently perform a ONE read for range queries;
+ single-row and multiget reads already rejected ANY.)
+ - The largest mutation batch accepted by the commitlog is now 128MB.
+ (In practice, batches larger than ~10MB always caused poor
+ performance due to load volatility and GC promotion failures.)
+ Larger batches will continue to be accepted but will not be
+ durable. Consider setting durable_writes=false if you really
+ want to use such large batches.
+ - Make sure that global settings: key_cache_{size_in_mb, save_period}
+ and row_cache_{size_in_mb, save_period} in conf/cassandra.yaml are
+ used instead of per-ColumnFamily options.
+ - JMX methods no longer return custom Cassandra objects. Any such methods
+ will now return standard Maps, Lists, etc.
+ - Hadoop input and output details are now separated. If you were
+ previously using methods such as getRpcPort you now need to use
+ getInputRpcPort or getOutputRpcPort depending on the circumstance.
+ - CQL changes:
+ + Prior to 1.1, you could use KEY as the primary key name in some
+ select statements, even if the PK was actually given a different
+ name. In 1.1+ you must use the defined PK name.
+
+
+Features
+--------
+ - Cassandra 1.1 adds row-level isolation. Multi-column updates to
+ a single row have always been *atomic* (either all will be applied,
+ or none) thanks to the CommitLog, but until 1.1 they were not *isolated*
+ -- a reader may see mixed old and new values while the update happens.
+ - Finer-grained control over data directories, allowing a ColumnFamily to
+ be pinned to specfic media.
+ - Hadoop: a new BulkOutputFormat is included which will directly write
+ SSTables locally and then stream them into the cluster.
+ - Hadoop: KeyRange.filter is now supported with ColumnFamilyInputFormat
+ - The bulk loader is not longer a fat client; it can be run from an
+ existing machine in a cluster.
+ - A new write survey mode has been added, similar to bootstrap (enabled via
+ -Dcassandra.write_survey=true), but the node will not automatically join
+ the cluster. This is useful for cases such as testing different
+ compaction strategies with live traffic without affecting the cluster.
+ - Key and row caches are now global, similar to the global memtable
+ threshold.
+ - Off-heap caches no longer require JNA.
+ - Streaming is now multithreaded.
+
+
+ 1.0.8
+ =====
+
+ Other
+ -----
+ - Allow configuring socket timeout for streaming
+
++
1.0.7
=====
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e36b2130/conf/cassandra.yaml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e36b2130/src/java/org/apache/cassandra/config/Config.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e36b2130/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index e301308,5aa59e4..fdff2a7
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@@ -983,38 -1009,8 +983,43 @@@ public class DatabaseDescripto
return conf.commitlog_total_space_in_mb;
}
+ public static int getKeyCacheSizeInMB()
+ {
+ return conf.key_cache_size_in_mb;
+ }
+
+ public static int getKeyCacheSavePeriod()
+ {
+ return conf.key_cache_save_period;
+ }
+
+ public static int getKeyCacheKeysToSave()
+ {
+ return conf.key_cache_keys_to_save;
+ }
+
+ public static int getRowCacheSizeInMB()
+ {
+ return conf.row_cache_size_in_mb;
+ }
+
+ public static int getRowCacheSavePeriod()
+ {
+ return conf.row_cache_save_period;
+ }
+
+ public static int getRowCacheKeysToSave()
+ {
+ return conf.row_cache_keys_to_save;
+ }
+
+ public static IRowCacheProvider getRowCacheProvider()
+ {
+ return rowCacheProvider;
+ }
++
+ public static int getStreamingSocketTimeout()
+ {
+ return conf.streaming_socket_timeout_in_ms;
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e36b2130/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e36b2130/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
index 1bf28b5,a75dafe..ed820b6
--- a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
+++ b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
@@@ -78,17 -77,11 +78,17 @@@ public class OutboundTcpConnectionPoo
// zero means 'bind on any available port.'
if (isEncryptedChannel())
{
- return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort(), FBUtilities.getLocalAddress(), 0);
+ if (Config.getOutboundBindAny())
+ return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort());
+ else
+ return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort(), FBUtilities.getLocalAddress(), 0);
}
-- else
++ else
{
- return new Socket(endPoint(), DatabaseDescriptor.getStoragePort(), FBUtilities.getLocalAddress(), 0);
+ if (Config.getOutboundBindAny())
+ return new Socket(endPoint(), DatabaseDescriptor.getStoragePort());
+ else
+ return new Socket(endPoint(), DatabaseDescriptor.getStoragePort(), FBUtilities.getLocalAddress(), 0);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e36b2130/src/java/org/apache/cassandra/streaming/FileStreamTask.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/streaming/FileStreamTask.java
index e04b9b9,ffb1388..8cd9a63
--- a/src/java/org/apache/cassandra/streaming/FileStreamTask.java
+++ b/src/java/org/apache/cassandra/streaming/FileStreamTask.java
@@@ -232,8 -197,8 +232,9 @@@ public class FileStreamTask extends Wra
try
{
socket = MessagingService.instance().getConnectionPool(to).newSocket();
+ socket.setSoTimeout(DatabaseDescriptor.getStreamingSocketTimeout());
output = socket.getOutputStream();
+ input = new DataInputStream(socket.getInputStream());
break;
}
catch (IOException e)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e36b2130/src/java/org/apache/cassandra/streaming/IncomingStreamReader.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/streaming/IncomingStreamReader.java
index c97c451,8ade06a..f57b400
--- a/src/java/org/apache/cassandra/streaming/IncomingStreamReader.java
+++ b/src/java/org/apache/cassandra/streaming/IncomingStreamReader.java
@@@ -56,12 -55,10 +56,13 @@@ public class IncomingStreamReade
public IncomingStreamReader(StreamHeader header, Socket socket) throws IOException
{
+ socket.setSoTimeout(DatabaseDescriptor.getStreamingSocketTimeout());
this.socket = socket;
- InetSocketAddress remoteAddress = (InetSocketAddress)socket.getRemoteSocketAddress();
- session = StreamInSession.get(remoteAddress.getAddress(), header.sessionId);
+ InetAddress host = header.broadcastAddress != null ? header.broadcastAddress
+ : ((InetSocketAddress)socket.getRemoteSocketAddress()).getAddress();
+ session = StreamInSession.get(host, header.sessionId);
+ session.setSocket(socket);
+
session.addFiles(header.pendingFiles);
// set the current file we are streaming so progress shows up in jmx
session.setCurrentFile(header.file);