ROMAのコードを読んでいて、間違っているのではと思うコードを見かけまし
たので報告させていただきます。
(もっとも、私自身 ruby はかなり初心者なので、間違った指摘できしたら
スイマセン)
該当コードは
async_process.rb
http://github.com/roma/roma/blob/master/ruby/server/lib/roma/async_process.rb
の L.214 付近の
if args != nil
acquired_recover_process
elsif args[0] == '-s'
recover_process
elsif args[0] == '-r' || args[0] == nil
acquired_recover_process
else
@log.error("asyncev_start_recover_process:argument error #
{args.inspect}")
end
で、最初の if の条件は
if args == nil
と思うのですがいかがでしょうか?
でないと、args が nil の場合にエラーと思いますし、'-s' の場合に recover_process
が呼び出されないと思います。
よろしくお願いします。
ご連絡ありがとうございます。
ご指摘の箇所ですがご推察の通りのバグです。後ほど修正させて頂きます。
コードを読まれているとのことですので、recover 関連の動作について書かせて頂きます。
今回ご連絡頂いたメソッドは、障害により失われた冗長度を回復するためのデータコピー
の開始を目的としています。受け取るオプションによりデータコピーの振る舞いを切り替え
ており、通常は -r オプションの動作を使っています。-s は歴史的な経緯で残しており
通常は使いません。
これら動作の違いはデータのコピー方法にあります。-s は push 型の動作で、データを
他のノードに送ります。-r は pull 型の動作で他のノードからデータを貰い受けます。
recover 動作の他に新規ノードの参加でデータコピーは実行されますが、コピーの指示を出す
ノードがデータを受けるよう、ある時期から動作を pull 型で統一するようにしました。
以上、コード理解の参考になればと存じます。
ありがとうございました。
鳥居 順次
On 1月24日, 午後4:50, きくもと <takakiku...@gmail.com> wrote:
> きくもとです。
>
> ROMAのコードを読んでいて、間違っているのではと思うコードを見かけまし
> たので報告させていただきます。
> (もっとも、私自身 ruby はかなり初心者なので、間違った指摘できしたら
> スイマセン)
>
> 該当コードは
>
> async_process.rb
> http://github.com/roma/roma/blob/master/ruby/server/lib/roma/async_pr...
> ご指摘の箇所ですがご推察の通りのバグです。後ほど修正させて頂きます。
了解いたしました。
また、recover 動作の説明ありがとうございます。
コードの理解の非常に大きな助けとなります。
ありがとうございました。
2010年1月25日0:09 jun <jun...@gmail.com>: