dcapwell commented on code in PR #3842: URL: https://github.com/apache/cassandra/pull/3842#discussion_r1937741779
########## src/java/org/apache/cassandra/service/accord/AccordConfigurationService.java: ########## @@ -433,16 +436,25 @@ protected void fetchTopologyInternal(long epoch) Stage.ACCORD_MIGRATION.execute(() -> { if (ClusterMetadata.current().epoch.getEpoch() < epoch) ClusterMetadataService.instance().fetchLogFromCMS(Epoch.create(epoch)); + + // In most cases, after fetching log from CMS, we will be caught up to the required epoch. + // This TCM will also notify Accord via reportMetadata, so we do not need to fetch topologies. + // If metadata has reported has skipped one or more epochs, and is _ahead_ of the requested epoch, + // we need to fetch topologies from peers to fill in the gap. + ClusterMetadata metadata = ClusterMetadata.current(); + if (metadata.epoch.getEpoch() == epoch) + return; + try { - Set<InetAddressAndPort> peers = new HashSet<>(ClusterMetadata.current().directory.allJoinedEndpoints()); + Set<InetAddressAndPort> peers = new HashSet<>(metadata.directory.allJoinedEndpoints()); peers.remove(FBUtilities.getBroadcastAddressAndPort()); if (peers.isEmpty()) return; - Topology topology; - while ((topology = FetchTopology.fetch(SharedContext.Global.instance, peers, epoch).get()) == null) - { - } + + // TODO (required): fetch only _missing_ topologies. Review Comment: one additional optimization... now that we waiting for TCM, TCM might have already informed us... we could check if accord has this epoch and avoid this. Maybe add a TODO for that? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org For additional commands, e-mail: pr-h...@cassandra.apache.org