in src/main/java/org/apache/cassandra/distributed/shared/AbstractBuilder.java [409:452]
private void finaliseBuilder()
{
if (finalised)
return;
finalised = true;
boolean log = logTopology();
if (!racks.isEmpty())
{
setRacks();
}
else if (nodeIdTopology != null)
{
if (nodeIdTopology.size() < nodeCount)
{
if (log) System.out.println("Adjusting node count since nodeIdTopology contains fewer nodes");
nodeCount = nodeIdTopology.size();
}
else if (nodeIdTopology.size() > nodeCount)
{
if (nodeCount == 0)
nodeCount = nodeIdTopology.size();
else
if (log) System.out.printf("nodeIdTopology configured for %d nodes while nodeCount is %d%n", nodeIdTopology.size(), nodeCount);
}
}
else
{
nodeIdTopology = IntStream.rangeClosed(1, nodeCount).boxed()
.collect(Collectors.toMap(nodeId -> nodeId,
nodeId -> NetworkTopology.dcAndRack(dcName(0), rackName(0))));
}
if (nodeCount <= 0)
throw new IllegalStateException("Cluster must have at least one node");
if (log) System.out.println("Node id topology:");
for (int i = 1; i <= nodeIdTopology.size(); i++)
{
NetworkTopology.DcAndRack dcAndRack = nodeIdTopology.get(i);
if (log) System.out.printf("node %d: dc = %s, rack = %s%n", i, dcAndRack.dc, dcAndRack.rack);
}
if (log) System.out.printf("Configured node count: %d, nodeIdTopology size: %d%n", nodeCount, nodeIdTopology.size());
}