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*****>