[Rumble-jp-dev] ShutdownHook機能について

Back to archive index

Naoki Kurosawa naoki_kuros****@ybb*****
2003年 4月 30日 (水) 23:16:53 JST


黒澤です。

L> ShutdownHookの機能をどうするかソースを眺めていたんですが、
L> シャットダウンしたサーバのデータは
L> 1、全部無視する。
L>   サーバの状態に関係なく、シャットダウン可能だが、
L>   実行できたデータがもったいない。
L>   最悪の場合は、送信する直前で殺された場合
L> 2、実行できたところまでサーバへ送信する
L>   変更は比較的簡単だが、
L>   データの状態やタイミングを考慮する必要あり?

バトル単位で、実行できたところまでサーバへ送信する、
とするのがいいと思います。
つまり、1on1で1division分のバトルをダウンロードしてきたら
いくつかのバトルを実行することになりますが、
シャットダウン時に完了しているバトルのみ送信します。
30ラウンド中29ラウンドまで進んでいても、終わっていないバトルは捨てる。

昔、対戦単位がdivision毎でなかったころは、
29ラウンド目までの結果をアップロードできたんですが、
集計効率も悪かったですし、しかたないです。


分散サーバがダウンしたかどうかの判別に、
バトルを予約してから30分経過したかどうか、
という条件を用いているのはご存知だと思います。
1divisionのバトル数・ラウンド数が多かったときに、
1divisionの実行に30分以上かかってしまうと、
ダウンしたと判断されてしまうので、
1バトルが終了するたびに経過時間をチェックし、
通信終了から10分以上経過したらそこまでの結果をいったんアップロードする
という仕組みが作ってあります。

それを利用すれば、シャットダウン時の途中経過送信も実装できると思います。


さらに、浜地さんがかつて追加してくださった機能で、
分散サーバ起動時のコマンドラインに、実行するバトル数を指定できる
というものがあります。

divisionの実行中に指定バトル数に達してしまった場合に、
そこまでの結果を送信し、同時に分散サーバが終了することを知らせる
terminatedフラグを追加してあります。
#分散サーバの実行単位をdivision毎に変更した際
それも同時に使ってください。


L> で、2にする場合は、黒澤さんが作成中のロボットが
L> 作成したファイルの送信方法なども考慮しないと
L> いけないなと思います。
L> ロボットが作成したファイルの送信はどのようにしようと
L> しているのでしょうか?
L> Server.java自体にすでに変更を入れてるのならお知らせください。

まさに変更中ですが、私の方でマージしますので、
自由に変更してくださって結構ですよ。

-- 
Naoki Kurosawa <naoki_kuros****@ybb*****>





Rumble-jp-dev メーリングリストの案内
Back to archive index