private List<MetadataResponseData.MetadataResponseTopic> withSnapshotReadFollowers(List<MetadataResponseData.MetadataResponseTopic> topics) {
        topics.forEach(metadataResponseTopic -> {
            metadataResponseTopic.partitions().forEach(metadataResponsePartition -> {
                int leaderMainNodeId = metadataResponsePartition.leaderId();
                if (leaderMainNodeId != -1) {
                    List<Integer> replicas = new ArrayList<>(main2proxyByRack.size());
                    replicas.add(leaderMainNodeId);
                    main2proxyByRack.forEach((rack, main2proxy) -> {
                        BrokerRegistration proxy = main2proxy.get(leaderMainNodeId);
                        if (proxy != null && proxy.id() != leaderMainNodeId) {
                            replicas.add(proxy.id());
                        }
                    });
                    metadataResponsePartition.setIsrNodes(replicas);
                    metadataResponsePartition.setReplicaNodes(replicas);
                }
            });
        });
        return topics;
    }
Get the proxy leader node when NOT_LEADER_OR_FOLLOWER happens.
core/src/main/java/kafka/automq/zerozone/ProxyNodeMapping.java