From 72822f8ddbb9cfe2532dfdde4b8191bfd4faa699 Mon Sep 17 00:00:00 2001 From: Jay Lee Date: Fri, 3 Apr 2020 16:53:15 +0800 Subject: [PATCH] *: update kvproto Signed-off-by: Jay Lee --- .gitignore | 1 + Cargo.lock | 2 +- components/raftstore/src/store/fsm/store.rs | 2 +- components/raftstore/src/store/peer.rs | 27 +++++++++---------- components/test_raftstore/src/pd.rs | 6 ++--- .../raftstore/test_commit_algorithm.rs | 10 +++---- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index f84645f5b1e..7c8068da599 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ fuzz-incremental/ /db/ /last_tikv.toml /raft/ +*.log diff --git a/Cargo.lock b/Cargo.lock index cd84edfe451..d7c0fd4f543 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1941,7 +1941,7 @@ dependencies = [ [[package]] name = "kvproto" version = "0.0.2" -source = "git+https://github.com/pingcap/kvproto.git#98f910b71904ff7190e26a483b242ad5d7330c31" +source = "git+https://github.com/pingcap/kvproto.git#b4034bceab266aca6de2329a0ceafa0572a61a38" dependencies = [ "futures 0.1.29", "grpcio", diff --git a/components/raftstore/src/store/fsm/store.rs b/components/raftstore/src/store/fsm/store.rs index 3c61273f986..15b35312ff9 100644 --- a/components/raftstore/src/store/fsm/store.rs +++ b/components/raftstore/src/store/fsm/store.rs @@ -2067,7 +2067,7 @@ impl<'a, T: Transport, C: PdClient> StoreFsmDelegate<'a, T, C> { } let exist_dr = mode.status.get_dr_autosync(); let dr = status.get_dr_autosync(); - if exist_dr.recover_id == dr.recover_id && exist_dr.state == dr.state { + if exist_dr.state_id == dr.state_id && exist_dr.state == dr.state { return; } } diff --git a/components/raftstore/src/store/peer.rs b/components/raftstore/src/store/peer.rs index 18ef6ce1a21..388b6a5fbad 100644 --- a/components/raftstore/src/store/peer.rs +++ b/components/raftstore/src/store/peer.rs @@ -246,7 +246,7 @@ pub struct Peer { /// Time of the last attempt to wake up inactive leader. pub bcast_wake_up_time: Option, - pub recover_id: u64, + pub replication_mode_version: u64, } impl Peer { @@ -326,7 +326,7 @@ impl Peer { peer_stat: PeerStat::default(), catch_up_logs: None, bcast_wake_up_time: None, - recover_id: 0, + replication_mode_version: 0, }; // If this region has only one peer and I am the one, campaign directly. @@ -340,12 +340,13 @@ impl Peer { pub fn init_commit_group(&mut self, mode: &mut ReplicationMode) { debug!("init commit group"; "mode" => ?mode, "regioni_id" => self.region_id, "peer_id" => self.peer.id); if mode.status.mode == ReplicateStatusMode::Majority { + self.replication_mode_version = 0; return; } if self.get_store().region().get_peers().is_empty() { return; } - self.recover_id = mode.status.get_dr_autosync().recover_id; + self.replication_mode_version = mode.status.get_dr_autosync().state_id; if mode.status.get_dr_autosync().state == DrAutoSyncState::Async { return; } @@ -359,9 +360,10 @@ impl Peer { debug!("switch commit group"; "mode" => ?mode, "regioni_id" => self.region_id, "peer_id" => self.peer.id); let mut guard = mode.lock().unwrap(); let clear = if guard.status.mode == ReplicateStatusMode::Majority { + self.replication_mode_version = 0; true } else { - self.recover_id = guard.status.get_dr_autosync().recover_id; + self.replication_mode_version = guard.status.get_dr_autosync().state_id; guard.status.get_dr_autosync().state == DrAutoSyncState::Async }; if clear { @@ -2551,19 +2553,16 @@ impl Peer { } fn region_replicate_status(&mut self) -> Option { - if self.recover_id == 0 { + if self.replication_mode_version == 0 { return None; } let mut status = RegionReplicateStatus::default(); - status.recover_id = self.recover_id; - if self - .raft_group - .raft - .check_group_commit_consistent() - .unwrap_or(false) - { - status.state = RegionReplicateStatusState::IntegrityOverLabel; - } + status.state_id = self.replication_mode_version; + status.state = match self.raft_group.raft.check_group_commit_consistent() { + Some(true) => RegionReplicateStatusState::IntegrityOverLabel, + Some(false) => RegionReplicateStatusState::Majority, + None => RegionReplicateStatusState::Unknown, + }; Some(status) } diff --git a/components/test_raftstore/src/pd.rs b/components/test_raftstore/src/pd.rs index fbfb21f9bf4..e4d60228c8e 100644 --- a/components/test_raftstore/src/pd.rs +++ b/components/test_raftstore/src/pd.rs @@ -1000,15 +1000,15 @@ impl TestPdClient { let mut status = ReplicateStatus::default(); status.mode = ReplicateStatusMode::DrAutosync; status.mut_dr_autosync().label_key = label_key.to_owned(); - status.mut_dr_autosync().recover_id = 1; + status.mut_dr_autosync().state_id = 1; self.cluster.wl().replication_status = Some(status); } pub fn switch_replication_mode(&self, state: DrAutoSyncState) { let mut cluster = self.cluster.wl(); let status = cluster.replication_status.as_mut().unwrap(); - let dr = status.mut_dr_autosync(); - dr.recover_id += 1; + let mut dr = status.mut_dr_autosync(); + dr.state_id += 1; dr.state = state; } diff --git a/tests/integrations/raftstore/test_commit_algorithm.rs b/tests/integrations/raftstore/test_commit_algorithm.rs index 4d87cc828d9..ea46808d88b 100644 --- a/tests/integrations/raftstore/test_commit_algorithm.rs +++ b/tests/integrations/raftstore/test_commit_algorithm.rs @@ -60,7 +60,7 @@ fn test_integrity_over_first_label() { must_get_equal(&cluster.get_engine(1), b"k1", b"v1"); thread::sleep(Duration::from_millis(100)); let state = cluster.pd_client.region_replicate_status(region.get_id()); - assert_eq!(state.recover_id, 1); + assert_eq!(state.state_id, 1); assert_eq!(state.state, RegionReplicateStatusState::IntegrityOverLabel); cluster.clear_send_filters(); @@ -84,7 +84,7 @@ fn test_integrity_over_first_label() { ); must_get_none(&cluster.get_engine(1), b"k2"); let state = cluster.pd_client.region_replicate_status(region.get_id()); - assert_eq!(state.recover_id, 1); + assert_eq!(state.state_id, 1); assert_eq!(state.state, RegionReplicateStatusState::IntegrityOverLabel); cluster @@ -94,7 +94,7 @@ fn test_integrity_over_first_label() { must_get_equal(&cluster.get_engine(1), b"k2", b"v2"); thread::sleep(Duration::from_millis(100)); let state = cluster.pd_client.region_replicate_status(region.get_id()); - assert_eq!(state.recover_id, 2); + assert_eq!(state.state_id, 2); assert_eq!(state.state, RegionReplicateStatusState::Majority); cluster @@ -120,14 +120,14 @@ fn test_integrity_over_first_label() { ); must_get_none(&cluster.get_engine(1), b"k3"); let state = cluster.pd_client.region_replicate_status(region.get_id()); - assert_eq!(state.recover_id, 3); + assert_eq!(state.state_id, 3); assert_eq!(state.state, RegionReplicateStatusState::Majority); cluster.clear_send_filters(); must_get_equal(&cluster.get_engine(1), b"k3", b"v3"); thread::sleep(Duration::from_millis(100)); let state = cluster.pd_client.region_replicate_status(region.get_id()); - assert_eq!(state.recover_id, 3); + assert_eq!(state.state_id, 3); assert_eq!(state.state, RegionReplicateStatusState::IntegrityOverLabel); }