frugalos icon indicating copy to clipboard operation
frugalos copied to clipboard

PutAll ensures all futures finish

Open koba-e964 opened this issue 5 years ago • 0 comments

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 リクエストを実行し続け、仮に失敗した時には PutAllMetricslost_fragments_total にカウントされる。 今後これに依存する形で以下のような PR を投げる予定。

  • DispersedClient::put が多重度の設定を受け取れるようにする
  • frugalos の PUT が多重度の設定を受け取れるようにする
  • frugalos の PUT の設定を DispersedClient::put まで伝播させる

Checklists

  • [x] I have run cargo fmt --all.

koba-e964 avatar Aug 26 '19 09:08 koba-e964