pub struct LogHistory { /* private fields */ }Expand description
ローカルログの歴史(要約)を保持するためのデータ構造.
スナップショット地点以降のローカルログに関して発生した、
重要な出来事(i.g., Termの変更)が記録されている.
それ以外に「ログの末尾(log_tail)」および「ログのコミット済み末尾(log_committed_tail)」、 「ログの消費済み末尾(log_consumed_tail)」の三つの地点を保持している.
それらの関してはlog_consumed_tail <= log_committed_tail <= log_tailの不変項が維持される.
Implementations§
Source§impl LogHistory
impl LogHistory
Sourcepub fn new(config: ClusterConfig) -> Self
pub fn new(config: ClusterConfig) -> Self
初期クラスタ構成を与えて、新しいLogHistoryインスタンスを生成する.
Sourcepub fn head(&self) -> LogPosition
pub fn head(&self) -> LogPosition
ローカルログの先端位置を返す.
Sourcepub fn tail(&self) -> LogPosition
pub fn tail(&self) -> LogPosition
ローカルログの終端位置を返す.
Sourcepub fn committed_tail(&self) -> LogPosition
pub fn committed_tail(&self) -> LogPosition
ローカルログのコミット済みの終端位置を返す.
「コミット済みの終端」==「未コミットの始端」
Sourcepub fn consumed_tail(&self) -> LogPosition
pub fn consumed_tail(&self) -> LogPosition
ローカルログの適用済みの終端位置を返す.
Sourcepub fn config(&self) -> &ClusterConfig
pub fn config(&self) -> &ClusterConfig
ローカルログに記録された最新のクラスタ構成を返す.
Sourcepub fn last_record(&self) -> &HistoryRecord
pub fn last_record(&self) -> &HistoryRecord
最後に追加されたHistoryRecordを返す.
Sourcepub fn get_record(&self, index: LogIndex) -> Option<&HistoryRecord>
pub fn get_record(&self, index: LogIndex) -> Option<&HistoryRecord>
指定されたインデックスが属するレコードを返す.
既に削除された領域が指定された場合にはNoneが返される.
Sourcepub fn record_appended(&mut self, suffix: &LogSuffix) -> Result<()>
pub fn record_appended(&mut self, suffix: &LogSuffix) -> Result<()>
suffixがローカルログに追記されたことを記録する.
Sourcepub fn record_committed(&mut self, new_tail_index: LogIndex) -> Result<()>
pub fn record_committed(&mut self, new_tail_index: LogIndex) -> Result<()>
new_tail_indexまでコミット済み地点が進んだことを記録する.
Sourcepub fn record_consumed(&mut self, new_tail_index: LogIndex) -> Result<()>
pub fn record_consumed(&mut self, new_tail_index: LogIndex) -> Result<()>
new_tailまでのログに含まれるコマンドが消費されたことを記録する.
ここでの“消費“とは「状態機械に入力として渡されて実行された」ことを意味する.
Sourcepub fn record_rollback(&mut self, new_tail: LogPosition) -> Result<()>
pub fn record_rollback(&mut self, new_tail: LogPosition) -> Result<()>
「追記済み and 未コミット」な末尾領域がロールバック(破棄)されたことを記録する.
ログの新しい終端はnew_tailとなる.
Sourcepub fn record_snapshot_installed(
&mut self,
new_head: LogPosition,
config: ClusterConfig,
) -> Result<()>
pub fn record_snapshot_installed( &mut self, new_head: LogPosition, config: ClusterConfig, ) -> Result<()>
スナップショットがインストールされたことを記録する.
new_headはスナップショットに含まれない最初のエントリのIDで、
configはスナップショット取得時のクラスタ構成、を示す.
new_headは、現在のログの末尾を超えていても良いが、
現在のログの先頭以前のものは許容されない.
(スナップショット地点から現在までの歴史が消失してしまうため)
なお、head以前の記録は歴史から削除される.
Sourcepub fn record_snapshot_loaded(&mut self, snapshot: &LogPrefix) -> Result<()>
pub fn record_snapshot_loaded(&mut self, snapshot: &LogPrefix) -> Result<()>
スナップショットが読み込まれたことを記録する.
ローカルログ内のスナップショット地点までのエントリは、消費されたものとして扱われる.
Trait Implementations§
Source§impl Clone for LogHistory
impl Clone for LogHistory
Source§fn clone(&self) -> LogHistory
fn clone(&self) -> LogHistory
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more