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

add docs/limestone_race.md #44

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

Conversation

t-horikawa
Copy link
Contributor

No description provided.

@ban-nobuhiro
Copy link
Contributor

前に口頭で中間報告をしてから、長らくそのままにして申し訳ありませんでした。

  • 内容の主題には異議はありません。
  • typo 的なものを suggest コメントしました。
  • (この PR の文脈を超えているため、ここでやるべきことではないかと思いますが、 epoch を管理する 変数が複数あり、使い分けがよくわからにという疑問は残りました。特に epoch_id_recorded_epoch_id_informed_ は一つではだめなのか)

@t-horikawa
Copy link
Contributor Author

epoch_id_recorded_ はepochファイルに書き込んだepoch、
epoch_id_informed_ shirakamiにpersistent_callbackで通知したepoch、
という使い分けをしています。
分けた理由は、walを書き込んでいないのにepochが更新された(switch_epochで通知された)というだけでepochファイルに書き込むという無駄なI/Oを出したくなかったからです。

Copy link
Contributor

@ban-nobuhiro ban-nobuhiro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo 等は suggestion 形式でインラインコメントしました


## この文書について
下記を説明する。
* shirakamiがcallすることを想定しているlimestoneのdatastore::switch_epoch()とdata_channel::begin_session()のタイミング制約
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* shirakamiがcallすることを想定しているlimestoneのdatastore::switch_epoch()とdata_channel::begin_session()のタイミング制約
* shirakamiがcallすることを想定しているlimestoneのdatastore::switch_epoch()とlog_channel::begin_session()のタイミング制約

おそらく文中と図3~7の data_channel はすべて log_channel の誤記かと思います。

3) logが属するepochは、data_channel::begin_session()をcallしたときのlimestone epochとなる。
4) limestone epochは、shirakamiがdatastore::switch_epoch()をcallすることで切り替わる。
5) どのlimestone epochまでdurableになった(logが不揮発記録として書き込まれた)のかは、datastore::last_epoch()で調べることができる。
6) durableとなったlimestone epochは、datastore::add_persistent_callback()でcallbackを登録しておくことで、durable epochがが更新される度にcall backとして通知を受け取ることもできる。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
6) durableとなったlimestone epochは、datastore::add_persistent_callback()でcallbackを登録しておくことで、durable epochがが更新される度にcall backとして通知を受け取ることもできる。
6) durableとなったlimestone epochは、datastore::add_persistent_callback()でcallbackを登録しておくことで、durable epochが更新される度にcall backとして通知を受け取ることもできる。

よりも小さいepochの最大値である。

### limestoneによるdurable epochの追跡
limestoneがdurable epochを認識できるようにするため、各log_channelは、各々が書き込んでるlogのepochを管理している。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
limestoneがdurable epochを認識できるようにするため、各log_channelは、各々が書き込んでるlogのepochを管理している
limestoneがdurable epochを認識できるようにするため、各log_channelは、各々が書き込んでいるlogのepochを管理している


図3 log_channelによるlogのepoch管理<br>
各log_channelは、begin_session()時にlimestone epochを調べ、そのepochを以降のadd_entry()で送られるlogのepoch(channel's epoch)として記憶しておく。
ここで、channel's epochがUINT_MAXとなっている期間は、log_channel::begin_session()が行われていない(未書き込み尾logは存在しない)ことを示している。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ここで、channel's epochがUINT_MAXとなっている期間は、log_channel::begin_session()が行われていない(未書き込み尾logは存在しない)ことを示している。
ここで、channel's epochがUINT64_MAXとなっている期間は、log_channel::begin_session()が行われていない(未書き込みのlogは存在しない)ことを示している。

UINT_MAX だと unsigned int の MAX となってしまい多くの場合 32bit になってしまうため。(図3~7 も同様)
(epoch の max 的な別名を付けてもいいかとは思いますが、ここでやる話ではなさそう)

@ban-nobuhiro
Copy link
Contributor

申し訳ありません。review インラインコメントの最後の操作が抜けていたので、Pending のままになっていました。

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.

2 participants