This is an automated email from the ASF dual-hosted git repository.

mck pushed a commit to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 5d72cdde8e4480e441e01851d3a3f452e5c2d461
Merge: c7ca9b8 2374a74
Author: Mick Semb Wever <m...@apache.org>
AuthorDate: Fri Aug 9 19:43:13 2019 +0200

    Merge branch 'cassandra-3.0' into cassandra-3.11

 CHANGES.txt                                                         | 1 +
 .../org/apache/cassandra/dht/tokenallocator/TokenAllocation.java    | 6 +++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --cc CHANGES.txt
index a1107b4,e4f4d22..5da96e6
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,9 -1,5 +1,10 @@@
 -3.0.19
 +3.11.5
 + * Make sure user defined compaction transactions are always closed 
(CASSANDRA-15123)
 + * Fix cassandra-env.sh to use $CASSANDRA_CONF to find cassandra-jaas.config 
(CASSANDRA-14305)
 + * Fixed nodetool cfstats printing index name twice (CASSANDRA-14903)
 + * Add flag to disable SASI indexes, and warnings on creation 
(CASSANDRA-14866)
 +Merged from 3.0:
+  * Fix NPE when using allocate_tokens_for_keyspace on new DC/rack 
(CASSANDRA-14592)
   * Filter sstables earlier when running cleanup (CASSANDRA-15100)
   * Use mean row count instead of mean column count for index selectivity 
calculation (CASSANDRA-15259)
   * Avoid updating unchanged gossip states (CASSANDRA-15097)
diff --cc src/java/org/apache/cassandra/dht/tokenallocator/TokenAllocation.java
index 9c50613,5501378..8a3ede7
--- a/src/java/org/apache/cassandra/dht/tokenallocator/TokenAllocation.java
+++ b/src/java/org/apache/cassandra/dht/tokenallocator/TokenAllocation.java
@@@ -200,33 -198,12 +200,37 @@@ public class TokenAllocatio
          final String dc = snitch.getDatacenter(endpoint);
          final int replicas = rs.getReplicationFactor(dc);
  
 +        if (replicas == 0 || replicas == 1)
 +        {
 +            // No replication, each node is treated as separate.
 +            return new StrategyAdapter()
 +            {
 +                @Override
 +                public int replicas()
 +                {
 +                    return 1;
 +                }
 +
 +                @Override
 +                public Object getGroup(InetAddress unit)
 +                {
 +                    return unit;
 +                }
 +
 +                @Override
 +                public boolean inAllocationRing(InetAddress other)
 +                {
 +                    return dc.equals(snitch.getDatacenter(other));
 +                }
 +            };
 +        }
 +
          Topology topology = tokenMetadata.getTopology();
-         int racks = topology.getDatacenterRacks().get(dc).asMap().size();
+ 
+         // if topology hasn't been setup yet for this endpoint+rack then 
treat it as a separate unit
+         int racks = topology.getDatacenterRacks().get(dc) != null && 
topology.getDatacenterRacks().get(dc).containsKey(snitch.getRack(endpoint))
+                 ? topology.getDatacenterRacks().get(dc).asMap().size()
+                 : 1;
  
          if (racks >= replicas)
          {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to