サーバ再起動後のstartupでのジョブ実行について
サーバ再起動後に一部のチャネルからキューを読み取るジョブフローが正常に動作しません。
不具合内容
以下のコードのような、特定チャネルのキューを待ち受けて処理をするジョブフローですが、
サーバ再起動後、ジョブフローが起動していてもチャネルのキューを読み出してくれません。
一度ジョブフローを中止した後に起動すると正常に動作します。
対処方法があれば教えてください。
{ try | # ブロック内部の処理が正常に行われると $STATUSに0が挿入される
</system/channels/HogeHoge> ->
[message = $RESULT] ->
print('${message}を受信しました。') ->
~
~
}=>
self()
-
大量にエラーが出ていました。
抜粋します。[2020-10-28 14:03:00,565:34285:kompirad:MainThread] ERROR: JobflowRuntime(7026).restart: error occured when unpickling data: AttributeError("'Process' object has no attribute 'snapshot'",)
[2020-10-28 14:03:00,575:34285:kompirad:MainThread] ERROR: JobflowRuntime(7025).restart: error occured when unpickling data: AttributeError("'Process' object has no attribute 'snapshot'",)
[2020-10-28 14:03:00,583:34285:kompirad:MainThread] ERROR: JobflowRuntime(7024).restart: error occured when unpickling data: AttributeError("'Process' object has no attribute 'snapshot'",)
[2020-10-28 14:03:00,590:34285:kompirad:MainThread] ERROR: JobflowRuntime(7022).restart: error occured when unpickling data: AttributeError("'Process' object has no attribute 'snapshot'",)
[2020-10-28 17:03:35,546:40302:kompirad:EngineServer] INFO: Process(7043).start: started /system/startup/JobG_RM227939 (execute by user "root")
[2020-10-28 17:03:35,566:40302:kompirad:MainThread] ERROR: PicklingQueue.__getitem__(0): caught a bytes-like object is required, not 'str' in pickle_load("b'\\x80\\x02ckompira.core.event\\nRecvEvent\\nq\\x00)\\x81q\\x01}q\\x02(X\\x08\\x00\\x00\\x00_sync_idq\\x03cuuid\\nUUID\\nq\\x04)\\x81q\\x05}q\\x06X\\x03\\x00\\x00\\x00intq\\x07\\x8a\\x11W\\xcde\\x92\\xb8\\x19t\\x9d4I\\x81\\xb55\\x07:\\xa3\\x00sbX\\x08\\x00\\x00\\x00_proc_idq\\x08M\\x80\\x1bX\\x08\\x00\\x00\\x00compoundq\\t\\x89X\\x07\\x00\\x00\\x00_objectq\\nc_codecs\\nencode\\nq\\x0bX*\\x00\\x00\\x00/system/channels/FromSvpfToRedmineAndSlackq\\x0cX\\x06\\x00\\x00\\x00latin1q\\r\\x86q\\x0eRq\\x0fQX\\x06\\x00\\x00\\x00_guardq\\x10NX\\x0f\\x00\\x00\\x00expire_datetimeq\\x11Nub.'")
Traceback (most recent call last):
File "kompira/core/event.py", line 50, in __getitem__
File "kompira/core/utils.py", line 150, in pickle_load
TypeError: a bytes-like object is required, not 'str'
[2020-10-28 17:03:35,570:40302:kompirad:MainThread] ERROR: PicklingQueue.pop(0): caught a bytes-like object is required, not 'str' in pickle_load("b'\\x80\\x02ckompira.core.event\\nRecvEvent\\nq\\x00)\\x81q\\x01}q\\x02(X\\x08\\x00\\x00\\x00_sync_idq\\x03cuuid\\nUUID\\nq\\x04)\\x81q\\x05}q\\x06X\\x03\\x00\\x00\\x00intq\\x07\\x8a\\x11W\\xcde\\x92\\xb8\\x19t\\x9d4I\\x81\\xb55\\x07:\\xa3\\x00sbX\\x08\\x00\\x00\\x00_proc_idq\\x08M\\x80\\x1bX\\x08\\x00\\x00\\x00compoundq\\t\\x89X\\x07\\x00\\x00\\x00_objectq\\nc_codecs\\nencode\\nq\\x0bX*\\x00\\x00\\x00/system/channels/FromSvpfToRedmineAndSlackq\\x0cX\\x06\\x00\\x00\\x00latin1q\\r\\x86q\\x0eRq\\x0fQX\\x06\\x00\\x00\\x00_guardq\\x10NX\\x0f\\x00\\x00\\x00expire_datetimeq\\x11Nub.'")
Traceback (most recent call last):
File "kompira/core/event.py", line 73, in pop
File "kompira/core/utils.py", line 150, in pickle_load
TypeError: a bytes-like object is required, not 'str' -
>状況を総合すると、Kompiraの動きがかなり怪しいのですが、Ver.1.6.1は新規インストールされましたでしょうか?
以前問い合わせさせていただいたように、
新規サーバにv1.6.1をインストールし、v1.5.5からエクスポート&インポート後に、v1.6.1を再度インストールしています。 -
ご確認ありがとうございます。
ログのエラーのうち、
error occured when unpickling data: AttributeError("'Process' object has no attribute 'snapshot'",)
につきましては、非チェックポイントモードで動作中のジョブフロープロセスが、サーバ再起動で再開できないことを示しているので、問題ありません。
一方、
PicklingQueue.__getitem__(0): caught a bytes-like object...
のエラーの方は、チャネルのイベント待ち処理データがデコードできないことを示しております。原因としては、HogeHogeチャネルに以前のバージョンの古いデータが残っていて、それをインポートしたたために、当該事象が発生していると考えられます。
タイムアウトを追加して正常動作するようになったということですが、念のためチャネルオブジェクトを作りなおした方(削除⇒新規作成)が良いかもしれません。
以上、よろしくお願いいたします。
サインインしてコメントを残してください。
コメント
14件のコメント