次の課題

ninix-aya 4.3.3はこの土日にリリースする予定ですが, プラグインについて次に考えるべき課題が既に出てきています.

それはプラグインの中でのデータ保存です. 現在の実装ではプラグインの中でファイルへの書き込みを行なうのは, それが完了するという保証がないためリスクがあります. 何故かというとninix-aya本体が終了するとプラグインは強制終了させられるためです. この強制終了というのが結構荒っぽく, atexitで登録した処理も実行されません.(POSIX環境ではシグナルでプロセスを終了させています.)

もちろんプラグインがninix-ayaより先に終了していれば問題ありません. 短時間で終了するプラグインであれば問題は表面化しない可能性が高いのですが, 常駐型プラグインでデータを保存しようとすると確実に問題になります.

1つ目の解決方法はEXECUTE SSTP/1.1のSetCookie, GetCookieを使う事ですが, ninix-ayaにはまだ実装されていません. もし実装されれば, このコマンドを使ってninix-aya(親プロセス側)にデータの保存を任せる事で問題を回避出来ます.

2つ目の解決方法はプラグインをdaemon化しない事です. ninix-aya終了時にプラグインに終了するように伝達し, ninix-ayaはプラグインの終了を待つ事になります. この方法の問題点はプラグインが必ず終了するという保証が無いことです. joinにtimeoutを設定して一定時間だけ待つ様にする事も出来ますが, その一定時間が過ぎれば結局は強制終了させることになります.

今の所は上記2つの方法しか思い付いていませんが, 出来るだけ早くにこの問題を解決したいと考えています.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です