You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ja...@apache.org on 2014/05/07 21:23:56 UTC
[1/4] git commit: Validate statements inside batch
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.1 411abc78e -> 0cb1db68f
Validate statements inside batch
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2e61cd5e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2e61cd5e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2e61cd5e
Branch: refs/heads/cassandra-2.1
Commit: 2e61cd5e07f3983d262ec6bba2aea329e28c5fdc
Parents: 19ff193
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Wed May 7 10:53:09 2014 +0200
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Wed May 7 10:53:09 2014 +0200
----------------------------------------------------------------------
.../org/apache/cassandra/cql3/statements/BatchStatement.java | 2 ++
.../apache/cassandra/cql3/statements/ModificationStatement.java | 5 +----
2 files changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e61cd5e/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
index c03548b..6a1201b 100644
--- a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
@@ -128,6 +128,8 @@ public class BatchStatement implements CQLStatement, MeasurableForPreparedCache
{
if (timestampSet && statement.isTimestampSet())
throw new InvalidRequestException("Timestamp must be set either on BATCH or individual statements");
+
+ statement.validate(state);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e61cd5e/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
index 526a26c..f8c4042 100644
--- a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
@@ -155,7 +155,7 @@ public abstract class ModificationStatement implements CQLStatement, MeasurableF
public void validate(ClientState state) throws InvalidRequestException
{
if (hasConditions() && attrs.isTimestampSet())
- throw new InvalidRequestException("Custom timestamps are not allowed when conditions are used");
+ throw new InvalidRequestException("Cannot provide custom timestamp for conditional update");
if (isCounter())
{
@@ -765,9 +765,6 @@ public abstract class ModificationStatement implements CQLStatement, MeasurableF
if (stmt.isCounter())
throw new InvalidRequestException("Conditional updates are not supported on counter tables");
- if (attrs.timestamp != null)
- throw new InvalidRequestException("Cannot provide custom timestamp for conditional update");
-
if (ifNotExists)
{
// To have both 'IF NOT EXISTS' and some other conditions doesn't make sense.
[2/4] git commit: Starting threads in the OutboundTcpConnectionPool
constructor causes race conditions
Posted by ja...@apache.org.
Starting threads in the OutboundTcpConnectionPool constructor causes race conditions
patch by sbtourist; reviewed by jasobrown for CASSANDRA-7177
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/05bacaea
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/05bacaea
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/05bacaea
Branch: refs/heads/cassandra-2.1
Commit: 05bacaeabc96a6d85fbf908dce8474acffcab730
Parents: 2e61cd5
Author: Jason Brown <ja...@apple.com>
Authored: Wed May 7 11:58:56 2014 -0700
Committer: Jason Brown <ja...@apple.com>
Committed: Wed May 7 11:58:56 2014 -0700
----------------------------------------------------------------------
CHANGES.txt | 2 +-
.../apache/cassandra/net/MessagingService.java | 6 +--
.../net/OutboundTcpConnectionPool.java | 41 +++++++++++++++++---
3 files changed, 40 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/05bacaea/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index fc192ef..65ee6cf 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,6 @@
2.0.9
* Warn when 'USING TIMESTAMP' is used on a CAS BATCH (CASSANDRA-7067)
-
+ * Starting threads in OutboundTcpConnectionPool constructor causes race conditions (CASSANDRA-7177)
2.0.8
* Correctly delete scheduled range xfers (CASSANDRA-7143)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/05bacaea/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java
index cccf698..dbd76d6 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -498,11 +498,11 @@ public final class MessagingService implements MessagingServiceMBean
cp = new OutboundTcpConnectionPool(to);
OutboundTcpConnectionPool existingPool = connectionManagers.putIfAbsent(to, cp);
if (existingPool != null)
- {
- cp.close();
cp = existingPool;
- }
+ else
+ cp.start();
}
+ cp.waitForStarted();
return cp;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/05bacaea/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
index 81168c6..c45fc53 100644
--- a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
+++ b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
@@ -22,6 +22,8 @@ import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.nio.channels.SocketChannel;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import org.apache.cassandra.concurrent.Stage;
import org.apache.cassandra.config.Config;
@@ -36,6 +38,7 @@ public class OutboundTcpConnectionPool
{
// pointer for the real Address.
private final InetAddress id;
+ private final CountDownLatch started;
public final OutboundTcpConnection cmdCon;
public final OutboundTcpConnection ackCon;
// pointer to the reseted Address.
@@ -46,13 +49,10 @@ public class OutboundTcpConnectionPool
{
id = remoteEp;
resetedEndpoint = SystemKeyspace.getPreferredIP(remoteEp);
+ started = new CountDownLatch(1);
cmdCon = new OutboundTcpConnection(this);
- cmdCon.start();
ackCon = new OutboundTcpConnection(this);
- ackCon.start();
-
- metrics = new ConnectionMetrics(id, this);
}
/**
@@ -167,14 +167,45 @@ public class OutboundTcpConnectionPool
}
return true;
}
+
+ public void start()
+ {
+ cmdCon.start();
+ ackCon.start();
+
+ metrics = new ConnectionMetrics(id, this);
+
+ started.countDown();
+ }
+
+ public void waitForStarted()
+ {
+ if (started.getCount() == 0)
+ return;
+
+ boolean error = false;
+ try
+ {
+ if (!started.await(1, TimeUnit.MINUTES))
+ error = true;
+ }
+ catch (InterruptedException e)
+ {
+ Thread.currentThread().interrupt();
+ error = true;
+ }
+ if (error)
+ throw new IllegalStateException(String.format("Connections to %s are not started!", id.getHostAddress()));
+ }
- public void close()
+ public void close()
{
// these null guards are simply for tests
if (ackCon != null)
ackCon.closeSocket(true);
if (cmdCon != null)
cmdCon.closeSocket(true);
+
metrics.release();
}
}
[3/4] git commit: Merge branch 'cassandra-1.2' into cassandra-2.0
Posted by ja...@apache.org.
Merge branch 'cassandra-1.2' into cassandra-2.0
Conflicts:
src/java/org/apache/cassandra/streaming/AbstractStreamSession.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ea7d0c82
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ea7d0c82
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ea7d0c82
Branch: refs/heads/cassandra-2.1
Commit: ea7d0c827aeeca8e9f6a318290bd501ed23ada48
Parents: 05bacae 21b3a67
Author: Jake Luciani <ja...@apache.org>
Authored: Wed May 7 15:10:14 2014 -0400
Committer: Jake Luciani <ja...@apache.org>
Committed: Wed May 7 15:10:14 2014 -0400
----------------------------------------------------------------------
CHANGES.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ea7d0c82/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 65ee6cf,8533e64..20fd115
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -30,66 -15,15 +30,66 @@@ Merged from 1.2
* Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
* Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
* Ensure that batchlog and hint timeouts do not produce hints (CASSANDRA-7058)
- * Don't shut MessagingService down when replacing a node (CASSANDRA-6476)
* Always clean up references in SerializingCache (CASSANDRA-6994)
+ * Don't shut MessagingService down when replacing a node (CASSANDRA-6476)
* fix npe when doing -Dcassandra.fd_initial_value_ms (CASSANDRA-6751)
* Preserves CQL metadata when updating table from thrift (CASSANDRA-6831)
- * fix time conversion to milliseconds in SimpleCondition.await (CASSANDRA-7149)
* remove duplicate query for local tokens (CASSANDRA-7182)
-
+ * raise streaming phi convict threshold level (CASSANDRA-7063)
-1.2.16
+2.0.7
+ * Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
+ * Restrict Windows to parallel repairs (CASSANDRA-6907)
+ * (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
+ * Fix NPE in MeteredFlusher (CASSANDRA-6820)
+ * Fix race processing range scan responses (CASSANDRA-6820)
+ * Allow deleting snapshots from dropped keyspaces (CASSANDRA-6821)
+ * Add uuid() function (CASSANDRA-6473)
+ * Omit tombstones from schema digests (CASSANDRA-6862)
+ * Include correct consistencyLevel in LWT timeout (CASSANDRA-6884)
+ * Lower chances for losing new SSTables during nodetool refresh and
+ ColumnFamilyStore.loadNewSSTables (CASSANDRA-6514)
+ * Add support for DELETE ... IF EXISTS to CQL3 (CASSANDRA-5708)
+ * Update hadoop_cql3_word_count example (CASSANDRA-6793)
+ * Fix handling of RejectedExecution in sync Thrift server (CASSANDRA-6788)
+ * Log more information when exceeding tombstone_warn_threshold (CASSANDRA-6865)
+ * Fix truncate to not abort due to unreachable fat clients (CASSANDRA-6864)
+ * Fix schema concurrency exceptions (CASSANDRA-6841)
+ * Fix leaking validator FH in StreamWriter (CASSANDRA-6832)
+ * Fix saving triggers to schema (CASSANDRA-6789)
+ * Fix trigger mutations when base mutation list is immutable (CASSANDRA-6790)
+ * Fix accounting in FileCacheService to allow re-using RAR (CASSANDRA-6838)
+ * Fix static counter columns (CASSANDRA-6827)
+ * Restore expiring->deleted (cell) compaction optimization (CASSANDRA-6844)
+ * Fix CompactionManager.needsCleanup (CASSANDRA-6845)
+ * Correctly compare BooleanType values other than 0 and 1 (CASSANDRA-6779)
+ * Read message id as string from earlier versions (CASSANDRA-6840)
+ * Properly use the Paxos consistency for (non-protocol) batch (CASSANDRA-6837)
+ * Add paranoid disk failure option (CASSANDRA-6646)
+ * Improve PerRowSecondaryIndex performance (CASSANDRA-6876)
+ * Extend triggers to support CAS updates (CASSANDRA-6882)
+ * Static columns with IF NOT EXISTS don't always work as expected (CASSANDRA-6873)
+ * Fix paging with SELECT DISTINCT (CASSANDRA-6857)
+ * Fix UnsupportedOperationException on CAS timeout (CASSANDRA-6923)
+ * Improve MeteredFlusher handling of MF-unaffected column families
+ (CASSANDRA-6867)
+ * Add CqlRecordReader using native pagination (CASSANDRA-6311)
+ * Add QueryHandler interface (CASSANDRA-6659)
+ * Track liveRatio per-memtable, not per-CF (CASSANDRA-6945)
+ * Make sure upgradesstables keeps sstable level (CASSANDRA-6958)
+ * Fix LIMIT with static columns (CASSANDRA-6956)
+ * Fix clash with CQL column name in thrift validation (CASSANDRA-6892)
+ * Fix error with super columns in mixed 1.2-2.0 clusters (CASSANDRA-6966)
+ * Fix bad skip of sstables on slice query with composite start/finish (CASSANDRA-6825)
+ * Fix unintended update with conditional statement (CASSANDRA-6893)
+ * Fix map element access in IF (CASSANDRA-6914)
+ * Avoid costly range calculations for range queries on system keyspaces
+ (CASSANDRA-6906)
+ * Fix SSTable not released if stream session fails (CASSANDRA-6818)
+ * Avoid build failure due to ANTLR timeout (CASSANDRA-6991)
+Merged from 1.2:
* Add UNLOGGED, COUNTER options to BATCH documentation (CASSANDRA-6816)
* add extra SSL cipher suites (CASSANDRA-6613)
* fix nodetool getsstables for blob PK (CASSANDRA-6803)
[4/4] git commit: Merge branch 'cassandra-2.0' into cassandra-2.1
Posted by ja...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1
Conflicts:
CHANGES.txt
src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0cb1db68
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0cb1db68
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0cb1db68
Branch: refs/heads/cassandra-2.1
Commit: 0cb1db68fc3ec56379fa478544e452eea671b5d9
Parents: 411abc7 ea7d0c8
Author: Jake Luciani <ja...@apache.org>
Authored: Wed May 7 15:17:58 2014 -0400
Committer: Jake Luciani <ja...@apache.org>
Committed: Wed May 7 15:18:49 2014 -0400
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cql3/statements/BatchStatement.java | 2 +
.../cql3/statements/ModificationStatement.java | 338 +++++++++++--------
.../apache/cassandra/net/MessagingService.java | 6 +-
.../net/OutboundTcpConnectionPool.java | 41 ++-
5 files changed, 239 insertions(+), 149 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0cb1db68/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 684d003,20fd115..5ecd19d
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -13,73 -22,22 +13,74 @@@ Merged from 1.2
* Add Cloudstack snitch (CASSANDRA-7147)
* Update system.peers correctly when relocating tokens (CASSANDRA-7126)
* Add Google Compute Engine snitch (CASSANDRA-7132)
- * Fix nodetool display with vnodes (CASSANDRA-7082)
- * Fix schema concurrency exceptions (CASSANDRA-6841)
- * Fix BatchlogManager#deleteBatch() use of millisecond timsestamps
- (CASSANDRA-6822)
- * Fix batchlog to account for CF truncation records (CASSANDRA-6999)
- * Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
- * Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
- * Ensure that batchlog and hint timeouts do not produce hints (CASSANDRA-7058)
- * Always clean up references in SerializingCache (CASSANDRA-6994)
- * Don't shut MessagingService down when replacing a node (CASSANDRA-6476)
- * fix npe when doing -Dcassandra.fd_initial_value_ms (CASSANDRA-6751)
- * Preserves CQL metadata when updating table from thrift (CASSANDRA-6831)
* remove duplicate query for local tokens (CASSANDRA-7182)
- * raise streaming phi convict threshold level (CASSANDRA-7063)
-2.0.7
+
+2.1.0-beta2
+ * Increase default CL space to 8GB (CASSANDRA-7031)
+ * Add range tombstones to read repair digests (CASSANDRA-6863)
+ * Fix BTree.clear for large updates (CASSANDRA-6943)
+ * Fail write instead of logging a warning when unable to append to CL
+ (CASSANDRA-6764)
+ * Eliminate possibility of CL segment appearing twice in active list
+ (CASSANDRA-6557)
+ * Apply DONTNEED fadvise to commitlog segments (CASSANDRA-6759)
+ * Switch CRC component to Adler and include it for compressed sstables
+ (CASSANDRA-4165)
+ * Allow cassandra-stress to set compaction strategy options (CASSANDRA-6451)
+ * Add broadcast_rpc_address option to cassandra.yaml (CASSANDRA-5899)
+ * Auto reload GossipingPropertyFileSnitch config (CASSANDRA-5897)
+ * Fix overflow of memtable_total_space_in_mb (CASSANDRA-6573)
+ * Fix ABTC NPE and apply update function correctly (CASSANDRA-6692)
+ * Allow nodetool to use a file or prompt for password (CASSANDRA-6660)
+ * Fix AIOOBE when concurrently accessing ABSC (CASSANDRA-6742)
+ * Fix assertion error in ALTER TYPE RENAME (CASSANDRA-6705)
+ * Scrub should not always clear out repaired status (CASSANDRA-5351)
+ * Improve handling of range tombstone for wide partitions (CASSANDRA-6446)
+ * Fix ClassCastException for compact table with composites (CASSANDRA-6738)
+ * Fix potentially repairing with wrong nodes (CASSANDRA-6808)
+ * Change caching option syntax (CASSANDRA-6745)
+ * Fix stress to do proper counter reads (CASSANDRA-6835)
+ * Fix help message for stress counter_write (CASSANDRA-6824)
+ * Fix stress smart Thrift client to pick servers correctly (CASSANDRA-6848)
+ * Add logging levels (minimal, normal or verbose) to stress tool (CASSANDRA-6849)
+ * Fix race condition in Batch CLE (CASSANDRA-6860)
+ * Improve cleanup/scrub/upgradesstables failure handling (CASSANDRA-6774)
+ * ByteBuffer write() methods for serializing sstables (CASSANDRA-6781)
+ * Proper compare function for CollectionType (CASSANDRA-6783)
+ * Update native server to Netty 4 (CASSANDRA-6236)
+ * Fix off-by-one error in stress (CASSANDRA-6883)
+ * Make OpOrder AutoCloseable (CASSANDRA-6901)
+ * Remove sync repair JMX interface (CASSANDRA-6900)
+ * Add multiple memory allocation options for memtables (CASSANDRA-6689, 6694)
+ * Remove adjusted op rate from stress output (CASSANDRA-6921)
+ * Add optimized CF.hasColumns() implementations (CASSANDRA-6941)
+ * Serialize batchlog mutations with the version of the target node
+ (CASSANDRA-6931)
+ * Optimize CounterColumn#reconcile() (CASSANDRA-6953)
+ * Properly remove 1.2 sstable support in 2.1 (CASSANDRA-6869)
+ * Lock counter cells, not partitions (CASSANDRA-6880)
+ * Track presence of legacy counter shards in sstables (CASSANDRA-6888)
+ * Ensure safe resource cleanup when replacing sstables (CASSANDRA-6912)
+ * Add failure handler to async callback (CASSANDRA-6747)
+ * Fix AE when closing SSTable without releasing reference (CASSANDRA-7000)
+ * Clean up IndexInfo on keyspace/table drops (CASSANDRA-6924)
+ * Only snapshot relative SSTables when sequential repair (CASSANDRA-7024)
+ * Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
+ * fix cassandra stress errors on reads with native protocol (CASSANDRA-7033)
+ * Use OpOrder to guard sstable references for reads (CASSANDRA-6919)
+ * Preemptive opening of compaction result (CASSANDRA-6916)
+ * Multi-threaded scrub/cleanup/upgradesstables (CASSANDRA-5547)
+ * Optimize cellname comparison (CASSANDRA-6934)
+ * Native protocol v3 (CASSANDRA-6855)
+ * Optimize Cell liveness checks and clean up Cell (CASSANDRA-7119)
+ * Support consistent range movements (CASSANDRA-2434)
+Merged from 2.0:
++ * Starting threads in OutboundTcpConnectionPool constructor causes race conditions (CASSANDRA-7177)
+ * Allow overriding cassandra-rackdc.properties file (CASSANDRA-7072)
+ * Set JMX RMI port to 7199 (CASSANDRA-7087)
+ * Use LOCAL_QUORUM for data reads at LOCAL_SERIAL (CASSANDRA-6939)
+ * Log a warning for large batches (CASSANDRA-6487)
* Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
* Avoid early loading of non-system keyspaces before compaction-leftovers
cleanup at startup (CASSANDRA-6913)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0cb1db68/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0cb1db68/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
index 7f8b678,f8c4042..23f7cfe
--- a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
@@@ -713,9 -765,6 +765,9 @@@ public abstract class ModificationState
if (stmt.isCounter())
throw new InvalidRequestException("Conditional updates are not supported on counter tables");
+ if (attrs.timestamp != null)
- throw new InvalidRequestException("Cannot provide custom timestamp for conditional updates");
++ throw new InvalidRequestException("Cannot provide custom timestamp for conditional update");
+
if (ifNotExists)
{
// To have both 'IF NOT EXISTS' and some other conditions doesn't make sense.
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0cb1db68/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------