You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2010/06/15 00:41:26 UTC

svn commit: r954664 - /cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java

Author: jbellis
Date: Mon Jun 14 22:41:25 2010
New Revision: 954664

URL: http://svn.apache.org/viewvc?rev=954664&view=rev
Log:
avoid allowing endpoints computed from old token map to persist after clearCachedEndpoints.  patch by mdennis and jbellis for CASSANDRA-1147

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java

Modified: cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java?rev=954664&r1=954663&r2=954664&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java Mon Jun 14 22:41:25 2010
@@ -49,16 +49,16 @@ public abstract class AbstractReplicatio
 
     private TokenMetadata tokenMetadata;
     protected final IEndpointSnitch snitch;
-    private final Map<EndpointCacheKey, ArrayList<InetAddress>> cachedEndpoints;
+    private volatile Map<EndpointCacheKey, ArrayList<InetAddress>> cachedEndpoints;
 
     AbstractReplicationStrategy(TokenMetadata tokenMetadata, IEndpointSnitch snitch)
     {
+        // TODO assert snitch != null some test code violates this
+        assert tokenMetadata != null;
         this.tokenMetadata = tokenMetadata;
         this.snitch = snitch;
         cachedEndpoints = new NonBlockingHashMap<EndpointCacheKey, ArrayList<InetAddress>>();
         this.tokenMetadata.register(this);
-        if (this.snitch != null)
-            this.snitch.register(this);
     }
 
     /**
@@ -233,7 +233,7 @@ public abstract class AbstractReplicatio
     protected void clearCachedEndpoints()
     {
         logger.debug("clearing cached endpoints");
-        cachedEndpoints.clear();
+        cachedEndpoints = new NonBlockingHashMap<EndpointCacheKey, ArrayList<InetAddress>>();
     }
 
     public void invalidateCachedTokenEndpointValues()