Riakでのrについて
N=3で、dev3をstopして、?r=3 でGETしたら 404が返されるはずですよね? 200で返ってきちゃうんですけど、何かおかしい? #riak #fukuoka7db
2014-06-30 20:58:46@akimatter 200が返るのが正しいです。停止サーバーが本来担っていたvnodeへのアクセスは、生存ノードが肩代わりしますので。 slideshare.net/takahikosato/d… slideshare.net/takahikosato/d… docs.basho.com/riak/latest/th…
2014-07-01 00:09:37@takabow ありがとうございます! なるほどです。ではa,b,cというノードがあって、cがダウンしている際の、r=3の内訳としては、 a と b と フォールバックノード(a or b) の3つということになるんでしょうか?
2014-07-01 00:25:10@akimatter その場合はそうですね、ノードaかbのどちらかのvnodeが、フォールバックノードとして動作します。単にノードcをstopしたあとgetした場合、フォールバックノードはデータを持っていませんのでフォールバックは空っぽのvalueを返すはずですが、
2014-07-01 00:28:28@akimatter rではなくprという設定が別途存在します。これはフォールバックノードからの応答を許さない設定です。pr=3をでgetすると違いが見えると思います。
2014-07-01 00:31:07@takabow なるほど! フォールバックノードというものをわかってなかったのでprの意味もよくわからなかったんですが、お陰様で分かった気がしたんですが、 qiita.com/akm/items/d334… の環境でpr=3 だと 503が返ってくるんですがこれはこれでOKですか?
2014-07-01 00:36:26@akimatter はい、n=3,pr=3なので、3つのプライマリ(ここでの意味は本来レプリカが格納される3つのサーバー)全てから応答が返らないとread requestが受理できないという意味です。受理できないので503ですね。404は受理したうえでデータが無いという意味です
2014-07-01 00:39:44@akimatter さっきの503ですが、503 の http bodyには "PR-value unsatisfied: 1/3" と入ってると思うので、併せてそれもご確認を〜
2014-07-01 00:52:56