You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jm...@apache.org on 2015/11/13 15:50:55 UTC
[13/18] cassandra git commit: 10485-3.0 patch
10485-3.0 patch
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ed424bdd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ed424bdd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ed424bdd
Branch: refs/heads/trunk
Commit: ed424bdd65ccf11742f2016ae5bc0b3ad5a99571
Parents: 2a12713
Author: Joshua McKenzie <jm...@apache.org>
Authored: Fri Nov 13 09:49:31 2015 -0500
Committer: Joshua McKenzie <jm...@apache.org>
Committed: Fri Nov 13 09:49:31 2015 -0500
----------------------------------------------------------------------
.../apache/cassandra/service/StorageProxy.java | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed424bdd/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index 6bcc2f8..63fa8cf 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -2476,10 +2476,22 @@ public class StorageProxy implements StorageProxyMBean
{
public void runMayThrow()
{
- logger.trace("Adding hints for {}", targets);
- HintsService.instance.write(Iterables.transform(targets, StorageService.instance::getHostIdForEndpoint),
- Hint.create(mutation, System.currentTimeMillis()));
- targets.forEach(HintsService.instance.metrics::incrCreatedHints);
+ Set<InetAddress> validTargets = new HashSet<>(targets.size());
+ Set<UUID> hostIds = new HashSet<>(targets.size());
+ for (InetAddress target : targets)
+ {
+ UUID hostId = StorageService.instance.getHostIdForEndpoint(target);
+ if (hostId != null)
+ {
+ hostIds.add(hostId);
+ validTargets.add(target);
+ }
+ else
+ logger.debug("Discarding hint for endpoint not part of ring: {}", target);
+ }
+ logger.trace("Adding hints for {}", validTargets);
+ HintsService.instance.write(hostIds, Hint.create(mutation, System.currentTimeMillis()));
+ validTargets.forEach(HintsService.instance.metrics::incrCreatedHints);
// Notify the handler only for CL == ANY
if (responseHandler != null && responseHandler.consistencyLevel == ConsistencyLevel.ANY)
responseHandler.response(null);