Retzでよくあるエラー。
|
Retz 0.2.3にて、retz-clientのrunコマンドで実行した際に以下のようなログを出して異常終了。
Command exited with status 126 (pid: 14013) INFO ============ stdout of job 2 sandbox end =========== INFO Job(id=2, cmd='$ASAKUSA_HOME/yaess/bin/yaess-batch.sh m3bp.ExampleBatch) finished in 0.105 seconds. status: KILLED
アプリケーション(シェル)の終了コードが126で、RetzのステータスはKILLEDになっている。
(ただし、listコマンドで見ると終了コードは-1になっている)
(runコマンドでは標準出力のログしか出ないので)標準エラーのログを見てみると以下のような感じ。
$ retz-client get-file -id 2 --path stderr 〜 I0221 13:35:48.929261 13953 exec.cpp:162] Version: 1.1.0 I0221 13:35:48.932693 13970 exec.cpp:237] Executor registered on agent 22b28beb-75c3-4180-b667-df712371d365-S7 sh: /home/hishidama/asakusa/yaess/bin/yaess-batch.sh: Permission denied
シェルを実行しようとしてPermission denied(権限が無い)だと、Linuxでは終了コードが126になるらしい。
で、実行環境のyaess-batch.shを見ると全ユーザーに対して実行権限はあったのだが、
/home/hishidamaには自分自身のアクセス権限しか無かった。
Retz(Mesos)でアプリケーションを実行する際は、デフォルトでは専用のユーザーで実行しようとするらしい。
なので実行権限でエラーになることがある。
load-appする際に「そのアプリケーションをどのユーザーで実行するか」を指定できるので、それを指定しておく。
$ retz-client load-app -A asakusa0 -U hishidama
あるいは、retz-server/etc/retz.propertiesのretz.userでユーザーを指定しておく。[2017-03-08]