Skip to content

Commit

Permalink
change: remove EntryMembership
Browse files Browse the repository at this point in the history
  • Loading branch information
drmingdrmer committed Dec 23, 2021
1 parent 6625484 commit 6155117
Show file tree
Hide file tree
Showing 10 changed files with 60 additions and 107 deletions.
2 changes: 1 addition & 1 deletion async-raft/src/core/append_entries.rs
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ impl<D: AppData, R: AppDataResponse, N: RaftNetwork<D>, S: RaftStorage<D, R>> Ra
.filter_map(|ent| match &ent.payload {
EntryPayload::Membership(conf) => Some(ActiveMembership {
log_id: ent.log_id,
membership: conf.membership.clone(),
membership: conf.clone(),
}),
_ => None,
})
Expand Down
5 changes: 2 additions & 3 deletions async-raft/src/core/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ impl<'a, D: AppData, R: AppDataResponse, N: RaftNetwork<D>, S: RaftStorage<D, R>
let res = match resp {
Ok(data) => {
let membership = if let EntryPayload::Membership(ref c) = entry.payload {
Some(c.membership.clone())
Some(c.clone())
} else {
None
};
Expand All @@ -347,8 +347,7 @@ impl<'a, D: AppData, R: AppDataResponse, N: RaftNetwork<D>, S: RaftStorage<D, R>

pub fn handle_special_log(&mut self, entry: &Entry<D>) {
match &entry.payload {
EntryPayload::Membership(ref mem) => {
let m = &mem.membership;
EntryPayload::Membership(ref m) => {
if m.is_in_joint_consensus() {
// nothing to do
} else {
Expand Down
13 changes: 3 additions & 10 deletions async-raft/src/raft.rs
Original file line number Diff line number Diff line change
Expand Up @@ -597,7 +597,7 @@ pub enum EntryPayload<D: AppData> {
Normal(D),

/// A config change log entry.
Membership(EntryMembership),
Membership(MembershipConfig),
}

impl<D: AppData> MessageSummary for EntryPayload<D> {
Expand All @@ -606,19 +606,12 @@ impl<D: AppData> MessageSummary for EntryPayload<D> {
EntryPayload::Blank => "blank".to_string(),
EntryPayload::Normal(_n) => "normal".to_string(),
EntryPayload::Membership(c) => {
format!("config-change: {:?}", c.membership)
format!("config-change: {:?}", c)
}
}
}
}

/// A log entry holding a config change.
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct EntryMembership {
/// Details on the cluster's membership configuration.
pub membership: MembershipConfig,
}

//////////////////////////////////////////////////////////////////////////////////////////////////

/// The membership configuration of the cluster.
Expand Down Expand Up @@ -804,7 +797,7 @@ impl<D: AppData> ClientWriteRequest<D> {

/// Generate a new payload holding a config change.
pub(crate) fn new_config(membership: MembershipConfig) -> Self {
Self::new_base(EntryPayload::Membership(EntryMembership { membership }))
Self::new_base(EntryPayload::Membership(membership))
}

/// Generate a new blank payload.
Expand Down
17 changes: 6 additions & 11 deletions async-raft/tests/append_updates_membership.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ use std::time::Duration;
use anyhow::Result;
use async_raft::raft::AppendEntriesRequest;
use async_raft::raft::Entry;
use async_raft::raft::EntryMembership;
use async_raft::raft::EntryPayload;
use async_raft::raft::MembershipConfig;
use async_raft::AppData;
Expand Down Expand Up @@ -53,21 +52,17 @@ async fn append_updates_membership() -> Result<()> {
ent(1, 1),
Entry {
log_id: LogId { term: 1, index: 2 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {1,2},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {1,2},
members_after_consensus: None,
}),
},
ent(1, 3),
Entry {
log_id: LogId { term: 1, index: 4 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {1,2,3,4},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {1,2,3,4},
members_after_consensus: None,
}),
},
ent(1, 5),
Expand Down
17 changes: 6 additions & 11 deletions async-raft/tests/elect_compare_last_log.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ use std::time::Duration;

use anyhow::Result;
use async_raft::raft::Entry;
use async_raft::raft::EntryMembership;
use async_raft::raft::EntryPayload;
use async_raft::raft::MembershipConfig;
use async_raft::storage::HardState;
Expand Down Expand Up @@ -45,11 +44,9 @@ async fn elect_compare_last_log() -> Result<()> {

sto0.append_to_log(&[&Entry {
log_id: LogId { term: 2, index: 1 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {0,1},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {0,1},
members_after_consensus: None,
}),
}])
.await?;
Expand All @@ -66,11 +63,9 @@ async fn elect_compare_last_log() -> Result<()> {
sto1.append_to_log(&[
&Entry {
log_id: LogId { term: 1, index: 1 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {0,1},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {0,1},
members_after_consensus: None,
}),
},
&Entry {
Expand Down
2 changes: 1 addition & 1 deletion async-raft/tests/initialization.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ async fn initialization() -> Result<()> {

tracing::info!("--- check membership is replicated: id: {}, first log: {:?}", i, first);
let mem = match first.unwrap().payload {
EntryPayload::Membership(ref x) => x.membership.clone(),
EntryPayload::Membership(ref x) => x.clone(),
_ => {
panic!("expect Membership payload")
}
Expand Down
9 changes: 3 additions & 6 deletions async-raft/tests/members_leader_fix_partial.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ use std::sync::Arc;

use anyhow::Result;
use async_raft::raft::Entry;
use async_raft::raft::EntryMembership;
use async_raft::raft::EntryPayload;
use async_raft::raft::MembershipConfig;
use async_raft::Config;
Expand Down Expand Up @@ -44,11 +43,9 @@ async fn members_leader_fix_partial() -> Result<()> {
term: 1,
index: want + 1,
},
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {0},
members_after_consensus: Some(btreeset! {0,1,2}),
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {0},
members_after_consensus: Some(btreeset! {0,1,2}),
}),
}])
.await?;
Expand Down
9 changes: 3 additions & 6 deletions async-raft/tests/snapshot_overrides_membership.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ use std::time::Duration;
use anyhow::Result;
use async_raft::raft::AppendEntriesRequest;
use async_raft::raft::Entry;
use async_raft::raft::EntryMembership;
use async_raft::raft::EntryPayload;
use async_raft::raft::MembershipConfig;
use async_raft::Config;
Expand Down Expand Up @@ -100,11 +99,9 @@ async fn snapshot_overrides_membership() -> Result<()> {
prev_log_id: LogId::new(0, 0),
entries: vec![Entry {
log_id: LogId { term: 1, index: 1 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset![2, 3],
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset![2, 3],
members_after_consensus: None,
}),
}],
leader_commit: 0,
Expand Down
4 changes: 2 additions & 2 deletions memstore/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ impl MemStore {
it.find_map(|entry| match &entry.payload {
EntryPayload::Membership(cfg) => Some(ActiveMembership {
log_id: entry.log_id,
membership: cfg.membership.clone(),
membership: cfg.clone(),
}),
_ => None,
})
Expand Down Expand Up @@ -728,7 +728,7 @@ impl RaftStorage<ClientRequest, ClientResponse> for MemStore {
EntryPayload::Membership(ref mem) => {
sm.last_membership = Some(ActiveMembership {
log_id: entry.log_id,
membership: mem.membership.clone(),
membership: mem.clone(),
});
res.push(ClientResponse(None))
}
Expand Down
89 changes: 33 additions & 56 deletions memstore/src/test.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
use std::future::Future;
use std::marker::PhantomData;

use async_raft::raft::EntryMembership;
use async_trait::async_trait;
use maplit::btreeset;

Expand Down Expand Up @@ -157,11 +156,9 @@ where
},
&Entry {
log_id: LogId { term: 1, index: 2 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {3,4,5},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {3,4,5},
members_after_consensus: None,
}),
},
])
Expand All @@ -183,11 +180,9 @@ where
store
.append_to_log(&[&Entry {
log_id: (1, 1).into(),
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
}),
}])
.await?;
Expand All @@ -208,11 +203,9 @@ where
store
.append_to_log(&[&Entry {
log_id: LogId { term: 1, index: 3 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
}),
}])
.await?;
Expand Down Expand Up @@ -326,11 +319,9 @@ where
},
&Entry {
log_id: LogId { term: 1, index: 2 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {3,4,5},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {3,4,5},
members_after_consensus: None,
}),
},
])
Expand All @@ -352,11 +343,9 @@ where
store
.append_to_log(&[&Entry {
log_id: (1, 1).into(),
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
}),
}])
.await?;
Expand All @@ -377,11 +366,9 @@ where
store
.append_to_log(&[&Entry {
log_id: LogId { term: 1, index: 3 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
}),
}])
.await?;
Expand Down Expand Up @@ -696,11 +683,9 @@ where
store
.apply_to_state_machine(&[&Entry {
log_id: LogId { term: 1, index: 3 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {1,2},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {1,2},
members_after_consensus: None,
}),
}])
.await?;
Expand Down Expand Up @@ -1004,11 +989,9 @@ where
},
&Entry {
log_id: LogId { term: 1, index: 3 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
}),
},
])
Expand All @@ -1021,11 +1004,9 @@ where
},
&Entry {
log_id: LogId { term: 2, index: 2 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {3,4,5},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {3,4,5},
members_after_consensus: None,
}),
},
])
Expand Down Expand Up @@ -1064,11 +1045,9 @@ where
},
&Entry {
log_id: LogId { term: 1, index: 3 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {1,2,3},
members_after_consensus: None,
}),
},
])
Expand All @@ -1082,11 +1061,9 @@ where
},
&Entry {
log_id: LogId { term: 2, index: 2 },
payload: EntryPayload::Membership(EntryMembership {
membership: MembershipConfig {
members: btreeset! {3,4,5},
members_after_consensus: None,
},
payload: EntryPayload::Membership(MembershipConfig {
members: btreeset! {3,4,5},
members_after_consensus: None,
}),
},
])
Expand Down

0 comments on commit 6155117

Please sign in to comment.