Struct raft::raw_node::RawNode [−][src]
Expand description
RawNode is a thread-unsafe Node. The methods of this struct correspond to the methods of Node and are described more fully there.
Fields
raft: Raft<T>
The internal raft state.
Implementations
Create a new RawNode given some Config
.
Create a new RawNode given some Config
and the default logger.
The default logger is an slog
to log
adapter.
Sets priority of node.
Tick advances the internal logical clock by a single tick.
Returns true to indicate that there will probably be some readiness which needs to be handled.
Campaign causes this RawNode to transition to candidate state.
Propose proposes data be appended to the raft log.
Broadcast heartbeats to all the followers.
If it’s not leader, nothing will happen.
ProposeConfChange proposes a config change.
If the node enters joint state with auto_leave
set to true, it’s
caller’s responsibility to propose an empty conf change again to force
leaving joint state.
Applies a config change to the local node. The app must call this when it applies a configuration change, except when it decides to reject the configuration change, in which case no call must take place.
Step advances the state machine using the given message.
Returns the outstanding work that the application needs to handle.
This includes appending and applying entries or a snapshot, updating the HardState,
and sending messages. The returned Ready
MUST be handled and subsequently
passed back via advance
or its families. Before that, DO NOT call any function like
step
, propose
, campaign
to change internal state.
Self::has_ready
should be called first to check if it’s necessary to handle the ready.
HasReady called when RawNode user need to check if any Ready pending.
Notifies that the ready of this number has been persisted.
Since Ready must be persisted in order, calling this function implicitly means all readies with numbers smaller than this one have been persisted.
Self::has_ready
and Self::ready
should be called later to handle further
updates that become valid after ready being persisted.
Advances the ready after fully processing it.
Fully processing a ready requires to persist snapshot, entries and hard states, apply all committed entries, send all messages.
Returns the LightReady that contains commit index, committed entries and messages. LightReady
contains updates that only valid after persisting last ready. It should also be fully processed.
Then Self::advance_apply
or Self::advance_apply_to
should be used later to update applying
progress.
Advances the ready without applying committed entries. Self::advance_apply
or
Self::advance_apply_to
should be used later to update applying progress.
Returns the LightReady that contains commit index, committed entries and messages.
Since Ready must be persisted in order, calling this function implicitly means all ready collected before have been persisted.
Same as Self::advance_append
except that it allows to only store the updates in cache.
Self::on_persist_ready
should be used later to update the persisting progress.
Raft works on an assumption persisted updates should not be lost, which usually requires expensive
operations like fsync
. advance_append_async
allows you to control the rate of such operations and
get a reasonable batch size. However, it’s still required that the updates can be read by raft from the
Storage
trait before calling advance_append_async
.
Advance apply to the index of the last committed entries given before.
Advance apply to the passed index.
ReportUnreachable reports the given node is not reachable for the last send.
ReportSnapshot reports the status of the sent snapshot.
Request a snapshot from a leader. The snapshot’s index must be greater or equal to the request_index.
TransferLeader tries to transfer leadership to the given transferee.
ReadIndex requests a read state. The read state will be set in ready. Read State has a read index. Once the application advances further than the read index, any linearizable read requests issued before the read request can be processed safely. The read state will have the same rctx attached.
Set whether skip broadcast empty commit messages at runtime.
Set whether to batch append msg at runtime.
Auto Trait Implementations
impl<T> RefUnwindSafe for RawNode<T> where
T: RefUnwindSafe,
impl<T> UnwindSafe for RawNode<T> where
T: UnwindSafe,