frugalos
frugalos copied to clipboard
PutAll ensures all futures finish
Types of changes
Please check one of the following:
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [x] Breaking change (fix or feature that would cause existing functionality to change)
Description of changes
frugalos_segment::client::PutAll
が、与えられた future を全て確実に実行するようになる。
Behavior
frugalos_segment::client::PutAll
が required_ok_count 個の future を成功裡に実行した後、残りの future を捨てる代わりに DefaultCpuTaskQueue に投げるようになる。
Purpose
Fixes https://github.com/frugalos/frugalos/issues/175.
PUT リクエストで保存すべきフラグメントが全部保存されない可能性があるという問題があり、今回の変更はそれを部分的に解決する。
この変更により、クライアントに応答を返した後も内部では Put リクエストを実行し続け、仮に失敗した時には PutAllMetrics
の lost_fragments_total
にカウントされる。
今後これに依存する形で以下のような PR を投げる予定。
- DispersedClient::put が多重度の設定を受け取れるようにする
- frugalos の PUT が多重度の設定を受け取れるようにする
- frugalos の PUT の設定を DispersedClient::put まで伝播させる
Checklists
- [x] I have run
cargo fmt --all
.