Actually make ClusterMetadata.placements private

This commit is contained in:
Sam Tunnicliffe 2026-07-03 14:56:19 +01:00
parent 98cea35aa4
commit 730bb7e1d5
8 changed files with 10 additions and 10 deletions

View File

@ -276,7 +276,7 @@ final class HintsDispatcher implements AutoCloseable
// Also may need to apply locally because it's possible this is from the batchlog
// and we never applied it locally
// TODO (review): Additional error handling necessary? Hints are lossy
DataPlacement dataPlacement = cm.placements.get(cm.schema.getKeyspace(mutation.getKeyspaceName()).getMetadata().params.replication);
DataPlacement dataPlacement = cm.placement(cm.schema.getKeyspace(mutation.getKeyspaceName()).getMetadata().params.replication);
VersionedEndpoints.ForToken forToken = dataPlacement.writes.forToken(mutation.key().getToken());
Replica self = forToken.get().selfIfPresent();
if (self != null)

View File

@ -312,7 +312,7 @@ public class AccordTopology
public static Topology createAccordTopology(ClusterMetadata metadata, ShardLookup lookup)
{
return createAccordTopology(metadata.epoch, metadata.schema, metadata.placements, metadata.directory, metadata.accordFastPath, lookup, metadata.accordStaleReplicas);
return createAccordTopology(metadata.epoch, metadata.schema, metadata.placements(), metadata.directory, metadata.accordFastPath, lookup, metadata.accordStaleReplicas);
}
public static Topology createAccordTopology(ClusterMetadata metadata, Topology current)

View File

@ -109,7 +109,7 @@ public class ClusterMetadata
public final DistributedSchema schema;
public final Directory directory;
public final TokenMap tokenMap;
public final DataPlacements placements;
private final DataPlacements placements;
public final AccordFastPath accordFastPath;
public final LockedRanges lockedRanges;
public final InProgressSequences inProgressSequences;

View File

@ -52,7 +52,7 @@ public class MetadataKeys
.put(SCHEMA, cm -> cm.schema)
.put(NODE_DIRECTORY, cm -> cm.directory)
.put(TOKEN_MAP, cm -> cm.tokenMap)
.put(DATA_PLACEMENTS, cm -> cm.placements)
.put(DATA_PLACEMENTS, ClusterMetadata::placements)
.put(LOCKED_RANGES, cm -> cm.lockedRanges)
.put(IN_PROGRESS_SEQUENCES, cm -> cm.inProgressSequences)
.put(ACCORD_FAST_PATH, cm -> cm.accordFastPath)

View File

@ -78,7 +78,7 @@ public class AccordMarkStale implements Transformation
for (KeyspaceMetadata keyspace : prev.schema.getKeyspaces().without(SchemaConstants.REPLICATED_SYSTEM_KEYSPACE_NAMES))
{
List<AccordTopology.KeyspaceShard> shards = AccordTopology.KeyspaceShard.forKeyspace(keyspace, prev.placements, prev.directory);
List<AccordTopology.KeyspaceShard> shards = AccordTopology.KeyspaceShard.forKeyspace(keyspace, prev.placements(), prev.directory);
for (AccordTopology.KeyspaceShard shard : shards)
{

View File

@ -772,7 +772,7 @@ public class CMSOfflineTool implements Runnable
throw new IllegalArgumentException("Keyspace " + keyspace + " not found in cluster metadata.");
}
DataPlacement placement = metadata.placements.get(keyspaceMetadata.params.replication);
DataPlacement placement = metadata.placement(keyspaceMetadata.params.replication);
List<Object[]> rows = new ArrayList<>();
rows.addAll(replicaGroupsToRows(placement.reads, "read"));
rows.addAll(replicaGroupsToRows(placement.writes, "write"));

View File

@ -105,7 +105,7 @@ public class AccordTopologyUtils
{
ReplicationParams replication = keyspace.params.replication;
AbstractReplicationStrategy strategy = AbstractReplicationStrategy.createReplicationStrategy(keyspace.name, replication);
DataPlacements.Builder placements = metadata.placements.unbuild();
DataPlacements.Builder placements = metadata.placements().unbuild();
DataPlacement placement = strategy.calculateDataPlacement(Epoch.EMPTY, metadata.tokenMap.toRanges(), metadata);
placements.with(replication, placement);
metadata = transformer.with(placements.build()).build().metadata;

View File

@ -344,7 +344,7 @@ public class EpochSyncTest
private static boolean joined(ClusterMetadata metadata, Node.Id id)
{
NodeAddresses address = metadata.directory.getNodeAddresses(new NodeId(id.id));
return metadata.placements.get(replication_params).reads.byEndpoint().keySet().contains(address.broadcastAddress);
return metadata.placement(replication_params).reads.byEndpoint().keySet().contains(address.broadcastAddress);
}
public enum EpochTracker { topologyManager, accordSyncPropagator }
@ -615,7 +615,7 @@ public class EpochSyncTest
{
Topology t = AccordTopology.createAccordTopology(current);
Ranges ranges = t.ranges().mergeTouching();
if (!current.placements.get(replication_params).reads.isEmpty())
if (!current.placement(replication_params).reads.isEmpty())
Assertions.assertThat(ranges).hasSize(1);
cms.setMetadata(current);
for (Node.Id id : status(s -> s != Status.Removed))
@ -721,7 +721,7 @@ public class EpochSyncTest
case Registered:
Invariants.require(!t.nodes().contains(id), "Node was in Init state but present in the Topology!");
Invariants.require(current.directory.peerId(address(id)) != null, "Node exists but not in TCM");
if (current.placements.get(replication_params).writes.byEndpoint().keySet().contains(address(id)))
if (current.placement(replication_params).writes.byEndpoint().keySet().contains(address(id)))
status = Status.Joining;
break;
case Joining: