Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Logへの追加処理を途中でキャンセルしない #47

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

yuezato
Copy link
Member

@yuezato yuezato commented Sep 22, 2021

進行中のPR #42 の類型です。

PR42では、log suffixへの削除処理を追加するのと同時に、削除中の状態遷移を防いでいます。

  • 状態遷移を許すと、その結果history(メモリ中のlogのキャッシュ)とlogがズレて
  • nodeがクラッシュしてしまうからです。

このPRでは、logへの追加処理に関しても同様に状態遷移を防ぐ必要があるので、対応します。
大雑把に言うと、以下のようなことが現在は許されているので、これを防ぎます:

あるノードにおいて、HistoryとLogが整合している状態で
H(istory): 1
L(og)    : 1
(数字はTermのつもりです)

別のノードがリーダーになった結果以下のようになり
H: 12
L: 1222
(これはLogは更新されたものの、historyを更新する前にキャンセルされてズレた状況です)

更に別のノードがリーダーになって
H: 123
L: 1232

ここでLogが単体で不整合(昇順でない)するため、再起動時にそれに気づいてクラッシュします。

PRの状態

  • 追加処理中にキャンセルすると、ノードがクラッシュする実例の提供。
  • PR42のコードをベースにしたいので、42がマージされてから実際のコードを書きます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant