ジョブフローからプロセス停止の際にエラーとなる
■事象
・ジョブフローからコマンドジョブ`/opt/kompira/bin/manage.py process --terminate -y --pid $pid`で稼働中の別プロセスを停止しようとした際にエラーとなります(djangoのモジュールエラー)
・必ずエラーとするというわけではなく、上記で停止が成功することもあります(このあたりの動作条件が不明)
→ステータスが待ちとなっているプロセスが失敗することが多いが、ステータス実行のプロセスも失敗することがあります
・当該コマンド(ジョブフローからのコマンド実行で失敗したプロセスIDを指定)をKompiraサーバのターミナル上から実行すると問題なく成功します
・以前のバージョン(v1.6.7)では特に本事象は発生しておりませんでした
■実行環境
・kompira enterprise v1.6.9
本事象の回避方法ごさいますでしょうか?
よろしくお願いします。
-
正式なコメント
追加の情報ありがとうございます。
ソースはログについてはご対応いただいている途中ですが、ジョブマネージャの情報からおおよそ原因がわかりました。
「test1がkompira本体、test2がジョブマネージャの動作サーバ」とありますが、おそらくジョブフローでは(リモートノードを指定せずに)ローカルノードに対して「manage.py process --terminate」コマンドを実行しているのではないでしょうか?
この manage.py process コマンドは「kompira 本体」がインストールされたサーバ上でしか動作しません。しかし、上記のとおりの実行方法ですが、コマンドジョブは test1 または test2 で実行されることになり、test2 で実行される場面で manage.py process コマンドがエラーになっているものと考えられます。
回避策としては、例えば、kompira 本体のサーバに対して SSH ログインして manage.py process コマンドを実行するようにしていただければ、どのジョブマネージャからでも実行できるようになると考えられます。
コメントアクション -
フィックスポイントの高橋です。
・ジョブフローからコマンドジョブ`/opt/kompira/bin/manage.py process --terminate -y --pid $pid`で稼働中の別プロセスを停止しようとした際にエラーとなります(djangoのモジュールエラー)
弊社内で簡単に確認したかぎりでは、エラーになることは再現せずプロセスを強制終了できているようでした。
調査のために、以下について教えていただけますでしょうか。
- 発生した場合には、どのようなエラーが表示されますでしょうか?
- 発生時に /var/log/kompira/kompirad.log にどのようなログが記録されていますでしょうか?(あるいは何も記録されていないか)
- v1.6.9 環境でご利用中の Python バージョン(/opt/kompira/bin/python -V)はいくつでしょうか?
以上、よろしくお願いいたします。
-
ログのご提供ありがとうございます。
いただいたログだけでは原因は特定できませんでしたが、気になる点がございますので、以下についても追加でご提供いただけますでしょうか。- manage.py process --terminate を呼び出しているジョブフローのソースコード
- 発生時の /var/log/kompira/kompira_jobmngrd.log ログ
- 管理領域のデフォルト領域に表示されるジョブマネージャ状態の一覧
SMTPRecipientsRefused エラーにつきましては、おそらく宛先に設定されている dummy@test.domain が不正なものとしてローカルまたはリモートのメールサーバがエラーを返しているのではないかと思います。適正なメールアドレスを設定してもエラーになるか確認してみていただけますでしょうか。
-
デフォルト領域は以下の状態です
対象範囲 *
無効 False
ジョブマネージャ状態
ホスト名 プロセスID SSL バージョン ステータス
test1 141908 TLSv1.3 1.6.9 動作中
test2 210156 TLSv1.3 1.6.9 動作中※ホスト名は実環境とは別名に置換しています
(test1がkompira本体、test2がジョブマネージャの動作サーバ)また、先程のdummy@test.domain についても、実際は実在するメールアドレス(他環境下では問題なく送受信できるアドレス)が出力されていましたが、ご提供時に上記に置換しております。
お伝えもれておりまいた。申し訳ありません
その他、ソースやログは別途送付いたします。
-
「test1がkompira本体、test2がジョブマネージャの動作サーバ」とありますが、おそらくジョブフローでは(リモートノードを指定せずに)ローカルノードに対して「manage.py process --terminate」コマンドを実行しているのではないでしょうか?
ソース確認したところ、上記ご指摘のとおり、ローカルノードに対して実行しておりました。
この manage.py process コマンドは「kompira 本体」がインストールされたサーバ上でしか動作しません。しかし、上記のとおりの実行方法ですが、コマンドジョブは test1 または test2 で実行されることになり、test2 で実行される場面で manage.py process コマンドがエラーになっているものと考えられます
承知しました。複数プロセスを停止しようとして、成功するものと失敗するものがある今回の現象が、
上記ご説明内容から納得いたしました。
回避策としては、例えば、kompira 本体のサーバに対して SSH ログインして manage.py process コマンドを実行するようにしていただければ、どのジョブマネージャからでも実行できるようになると考えられます。
こちらも承知いたしました。
本事象について、原因と対応策わかりましたので、本件クローズください。
ご対応ありがとうございました。
サインインしてコメントを残してください。
コメント
6件のコメント