Skip to content

Commit 3b4f4e1

Browse files
committed
Change: move log id related traits to mod openraft::log_id
Move trait `RaftLogId`, `LogIdOptionExt` and `LogIndexOptionExt` from `openraft::raft_types` to mod `openraft::log_id`
1 parent cb9fbed commit 3b4f4e1

20 files changed

+112
-97
lines changed

openraft/src/core/raft_core.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ use crate::error::InitializeError;
4444
use crate::error::QuorumNotEnough;
4545
use crate::error::RPCError;
4646
use crate::error::Timeout;
47+
use crate::log_id::LogIdOptionExt;
48+
use crate::log_id::RaftLogId;
4749
use crate::metrics::RaftMetrics;
4850
use crate::metrics::ReplicationMetrics;
4951
use crate::metrics::UpdateMatchedLogId;
@@ -63,8 +65,6 @@ use crate::raft::VoteRequest;
6365
use crate::raft::VoteResponse;
6466
use crate::raft::VoteTx;
6567
use crate::raft_state::LogStateReader;
66-
use crate::raft_types::LogIdOptionExt;
67-
use crate::raft_types::RaftLogId;
6868
use crate::replication::Replicate;
6969
use crate::replication::ReplicationCore;
7070
use crate::replication::ReplicationHandle;

openraft/src/core/replication_state.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::raft_types::LogIndexOptionExt;
1+
use crate::log_id::LogIndexOptionExt;
22

33
/// Calculate the distance between the matched log index on a replication target and local last log
44
/// index

openraft/src/defensive.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::ops::RangeBounds;
44

55
use async_trait::async_trait;
66

7-
use crate::raft_types::LogIdOptionExt;
7+
use crate::log_id::LogIdOptionExt;
88
use crate::DefensiveError;
99
use crate::Entry;
1010
use crate::ErrorSubject;

openraft/src/engine/log_id_list.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::raft_types::RaftLogId;
1+
use crate::log_id::RaftLogId;
22
use crate::storage::StorageHelper;
33
use crate::LogId;
44
use crate::LogIdOptionExt;

openraft/src/entry/entry_ref.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::fmt::Debug;
22

33
use crate::entry::traits::RaftPayload;
44
use crate::entry::RaftEntry;
5-
use crate::raft_types::RaftLogId;
5+
use crate::log_id::RaftLogId;
66
use crate::EntryPayload;
77
use crate::LogId;
88
use crate::Membership;

openraft/src/entry/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::fmt::Debug;
22

3-
use crate::raft_types::RaftLogId;
3+
use crate::log_id::RaftLogId;
44
use crate::LogId;
55
use crate::Membership;
66
use crate::MessageSummary;

openraft/src/entry/traits.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::raft_types::RaftLogId;
1+
use crate::log_id::RaftLogId;
22
use crate::Membership;
33
use crate::Node;
44
use crate::NodeId;

openraft/src/leader/leader.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use std::collections::BTreeSet;
22

3+
use crate::log_id::LogIndexOptionExt;
34
use crate::progress::entry::ProgressEntry;
45
use crate::progress::Progress;
56
use crate::progress::VecProgress;
67
use crate::quorum::QuorumSet;
7-
use crate::raft_types::LogIndexOptionExt;
88
use crate::LogId;
99
use crate::NodeId;
1010
use crate::Vote;

openraft/src/lib.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ pub use crate::defensive::DefensiveCheck;
8989
pub use crate::defensive::DefensiveCheckBase;
9090
pub use crate::entry::Entry;
9191
pub use crate::entry::EntryPayload;
92+
pub use crate::log_id::LogIdOptionExt;
93+
pub use crate::log_id::LogIndexOptionExt;
9294
pub use crate::membership::EffectiveMembership;
9395
pub use crate::membership::Membership;
9496
pub use crate::membership::StoredMembership;
@@ -104,7 +106,6 @@ pub use crate::raft::Raft;
104106
pub use crate::raft::RaftTypeConfig;
105107
pub use crate::raft_state::MembershipState;
106108
pub use crate::raft_state::RaftState;
107-
pub use crate::raft_types::LogIdOptionExt;
108109
pub(crate) use crate::raft_types::MetricsChangeFlags;
109110
pub use crate::raft_types::SnapshotId;
110111
pub use crate::raft_types::SnapshotSegmentId;
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
use crate::LogId;
2+
use crate::NodeId;
3+
4+
pub trait LogIdOptionExt {
5+
fn index(&self) -> Option<u64>;
6+
fn next_index(&self) -> u64;
7+
}
8+
9+
impl<NID: NodeId> LogIdOptionExt for Option<LogId<NID>> {
10+
fn index(&self) -> Option<u64> {
11+
self.map(|x| x.index)
12+
}
13+
14+
fn next_index(&self) -> u64 {
15+
match self {
16+
None => 0,
17+
Some(log_id) => log_id.index + 1,
18+
}
19+
}
20+
}
21+
22+
impl<NID: NodeId> LogIdOptionExt for Option<&LogId<NID>> {
23+
fn index(&self) -> Option<u64> {
24+
self.map(|x| x.index)
25+
}
26+
27+
fn next_index(&self) -> u64 {
28+
match self {
29+
None => 0,
30+
Some(log_id) => log_id.index + 1,
31+
}
32+
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
pub trait LogIndexOptionExt {
2+
fn next_index(&self) -> u64;
3+
fn prev_index(&self) -> Self;
4+
fn add(&self, v: u64) -> Self;
5+
}
6+
7+
impl LogIndexOptionExt for Option<u64> {
8+
fn next_index(&self) -> u64 {
9+
match self {
10+
None => 0,
11+
Some(v) => v + 1,
12+
}
13+
}
14+
15+
fn prev_index(&self) -> Self {
16+
match self {
17+
None => {
18+
panic!("None has no previous value");
19+
}
20+
Some(v) => {
21+
if *v == 0 {
22+
None
23+
} else {
24+
Some(*v - 1)
25+
}
26+
}
27+
}
28+
}
29+
30+
fn add(&self, v: u64) -> Self {
31+
Some(self.next_index() + v).prev_index()
32+
}
33+
}

openraft/src/log_id/mod.rs

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1+
mod log_id_option_ext;
2+
mod log_index_option_ext;
3+
mod raft_log_id;
4+
15
use std::fmt::Display;
26
use std::fmt::Formatter;
37

4-
use crate::raft_types::RaftLogId;
8+
pub use log_id_option_ext::LogIdOptionExt;
9+
pub use log_index_option_ext::LogIndexOptionExt;
10+
pub use raft_log_id::RaftLogId;
11+
512
use crate::CommittedLeaderId;
613
use crate::MessageSummary;
714
use crate::NodeId;
815

9-
mod traits;
10-
1116
/// The identity of a raft log.
1217
/// A term, node_id and an index identifies an log globally.
1318
#[derive(Debug, Default, Copy, Clone, PartialOrd, Ord, PartialEq, Eq)]

openraft/src/log_id/raft_log_id.rs

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
use crate::CommittedLeaderId;
2+
use crate::LogId;
3+
use crate::NodeId;
4+
5+
/// Defines API to operate an object that contains a log-id, such as a log entry or a log id.
6+
pub trait RaftLogId<NID: NodeId> {
7+
/// Returns a reference to the leader id that proposed this log id.
8+
///
9+
/// When a `LeaderId` is committed, some of its data can be discarded.
10+
/// For example, a leader id in standard raft is `(term, node_id)`, but a log id does not have
11+
/// to store the `node_id`, because in standard raft there is at most one leader that can be
12+
/// established.
13+
fn leader_id(&self) -> &CommittedLeaderId<NID> {
14+
self.get_log_id().committed_leader_id()
15+
}
16+
17+
/// Return a reference to the log-id it stores.
18+
fn get_log_id(&self) -> &LogId<NID>;
19+
20+
/// Update the log id it contains.
21+
fn set_log_id(&mut self, log_id: &LogId<NID>);
22+
}

openraft/src/log_id/traits.rs

Whitespace-only changes.

openraft/src/membership/effective_membership.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ use std::fmt::Debug;
33
use std::sync::Arc;
44

55
use crate::entry::RaftEntry;
6+
use crate::log_id::RaftLogId;
67
use crate::node::Node;
78
use crate::quorum::Joint;
89
use crate::quorum::QuorumSet;
9-
use crate::raft_types::RaftLogId;
1010
use crate::LogId;
1111
use crate::Membership;
1212
use crate::MessageSummary;

openraft/src/metrics/wait_test.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ use tokio::sync::watch;
77
use tokio::time::sleep;
88

99
use crate::core::ServerState;
10+
use crate::log_id::LogIdOptionExt;
1011
use crate::metrics::Wait;
1112
use crate::metrics::WaitError;
12-
use crate::raft_types::LogIdOptionExt;
1313
use crate::vote::CommittedLeaderId;
1414
use crate::LogId;
1515
use crate::Membership;

openraft/src/raft_state/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use crate::entry::RaftEntry;
88
use crate::equal;
99
use crate::error::ForwardToLeader;
1010
use crate::less_equal;
11+
use crate::log_id::RaftLogId;
1112
use crate::node::Node;
12-
use crate::raft_types::RaftLogId;
1313
use crate::utime::UTime;
1414
use crate::validate::Validate;
1515
use crate::LogId;

openraft/src/raft_types.rs

-79
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,6 @@
11
use std::fmt::Display;
22
use std::fmt::Formatter;
33

4-
use crate::vote::CommittedLeaderId;
5-
use crate::LogId;
6-
use crate::NodeId;
7-
8-
pub trait RaftLogId<NID: NodeId> {
9-
fn leader_id(&self) -> &CommittedLeaderId<NID> {
10-
self.get_log_id().committed_leader_id()
11-
}
12-
13-
fn get_log_id(&self) -> &LogId<NID>;
14-
15-
fn set_log_id(&mut self, log_id: &LogId<NID>);
16-
}
17-
18-
pub trait LogIdOptionExt {
19-
fn index(&self) -> Option<u64>;
20-
fn next_index(&self) -> u64;
21-
}
22-
23-
impl<NID: NodeId> LogIdOptionExt for Option<LogId<NID>> {
24-
fn index(&self) -> Option<u64> {
25-
self.map(|x| x.index)
26-
}
27-
28-
fn next_index(&self) -> u64 {
29-
match self {
30-
None => 0,
31-
Some(log_id) => log_id.index + 1,
32-
}
33-
}
34-
}
35-
36-
impl<NID: NodeId> LogIdOptionExt for Option<&LogId<NID>> {
37-
fn index(&self) -> Option<u64> {
38-
self.map(|x| x.index)
39-
}
40-
41-
fn next_index(&self) -> u64 {
42-
match self {
43-
None => 0,
44-
Some(log_id) => log_id.index + 1,
45-
}
46-
}
47-
}
48-
49-
pub trait LogIndexOptionExt {
50-
fn next_index(&self) -> u64;
51-
fn prev_index(&self) -> Self;
52-
fn add(&self, v: u64) -> Self;
53-
}
54-
55-
impl LogIndexOptionExt for Option<u64> {
56-
fn next_index(&self) -> u64 {
57-
match self {
58-
None => 0,
59-
Some(v) => v + 1,
60-
}
61-
}
62-
63-
fn prev_index(&self) -> Self {
64-
match self {
65-
None => {
66-
panic!("None has no previous value");
67-
}
68-
Some(v) => {
69-
if *v == 0 {
70-
None
71-
} else {
72-
Some(*v - 1)
73-
}
74-
}
75-
}
76-
}
77-
78-
fn add(&self, v: u64) -> Self {
79-
Some(self.next_index() + v).prev_index()
80-
}
81-
}
82-
834
// Everytime a snapshot is created, it is assigned with a globally unique id.
845
pub type SnapshotId = String;
856

openraft/src/replication/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ use crate::error::HigherVote;
2525
use crate::error::RPCError;
2626
use crate::error::ReplicationError;
2727
use crate::error::Timeout;
28+
use crate::log_id::LogIdOptionExt;
2829
use crate::log_id_range::LogIdRange;
2930
use crate::raft::AppendEntriesRequest;
3031
use crate::raft::AppendEntriesResponse;
3132
use crate::raft::InstallSnapshotRequest;
3233
use crate::raft::RaftMsg;
33-
use crate::raft_types::LogIdOptionExt;
3434
use crate::storage::RaftLogReader;
3535
use crate::storage::Snapshot;
3636
use crate::ErrorSubject;

openraft/src/runtime/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::engine::Command;
2-
use crate::raft_types::RaftLogId;
2+
use crate::log_id::RaftLogId;
33
use crate::Entry;
44
use crate::RaftTypeConfig;
55
use crate::StorageError;

0 commit comments

Comments
 (0)