tikv/tikv

two region full iteration in pd heartbeat tick

Open

#5.412 geöffnet am 5. Sept. 2019

Auf GitHub ansehen
 (9 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Rust (2.189 Forks)batch import
component/performancedifficulty/easyhelp wanted

Repository-Metriken

Stars
 (15.922 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 28T 9h) (68 gemergte PRs in 30 T)

Beschreibung

Question

In the on_pd_heartbeat_tick in release 2.1, I find we iterate the region peers twice.

        for peer in self.region_peers.values_mut() {
            peer.check_peers();
        }
        let mut leader_count = 0;
        for peer in self.region_peers.values_mut() {
            if peer.is_leader() {
                leader_count += 1;
                peer.heartbeat_pd(&self.pd_worker);
            }
        }

If the number of regions is high, this function may block for a while, I guess we can combine all in one for loop.

Contributor Guide