サーバ再起動後のstartupでのジョブ実行について

コメント

14件のコメント

  • 服部健太

    ジョブフローを実行中にKompiraサーバを再起動されたということでしょうか?

    その場合、通常ですと再起動後にそのジョブフローは異常終了しますので、ジョブフローを新たに実行しなおして、チャネルのキューからデータを読みだす必要がございます。

    0
    コメントアクション Permalink
  • 草場敬之

    ジョブフローが異常終了するのは構わないのですが、
    サーバ起動後にstartupで自動実行されたジョブフローが適切に動作しないのは仕様なのでしょうか?
    サーバ起動後に自動実行されたジョブフローはプロセスIDもシャットダウン前とは別物になっています。

    感覚的にはrabbitmqより先にジョブフローが起動したことで何か挙動がおかしくなったりしていないかを疑っています。
    ジョブフローの起動時刻がkompirad.logから見るに2020-10-28 10:05:54
    Starting RabbitMQのログが2020-10-28 10:05:58.880です。

    0
    コメントアクション Permalink
  • 服部健太

    なるほど。ちなみに、お使いのKompiraのバージョンはいくつになりますでしょうか?

    0
    コメントアクション Permalink
  • 草場敬之

    v1.6.1になります。
    OSはCentOS 8です。

    CentOS7系かつv1.5系の頃は起きていませんでした。

    0
    コメントアクション Permalink
  • 草場敬之

    少々表現が難しいのですが、
    正常に動作しないジョブフローを手動で中止、再度実行した場合、
    ジョブフロー実行前から入ってるキューは全て正常に読み出され処理されましたが、
    新しく入ったキューが処理されない、という事象が発生しました。

    kompiradをrestartして様子見中です。

    0
    コメントアクション Permalink
  • 服部健太

    弊社内では、現象を再現させることができていないのですが、サーバ再起動の時点で、チャネルにはデータは溜まっておりますでしょうか?それとも、再起動時点でチャネルは空で、サーバ再起動⇒startupジョブ起動⇒チャネルに対してデータ送信しても、ジョブフローがデータを読み込まず、という状況でしょうか?

    ちなみに、たしかに、kompirad、およびstartupジョブフローの方がRabbitMQより先に起動しますが、RabbitMQへの接続はリトライしますので、いずれ接続してRabbitMQからのデータを読み込んで、ジョブフローには渡されるかと思います。

     

    0
    コメントアクション Permalink
  • 草場敬之

    >再起動時点でチャネルは空で、サーバ再起動⇒startupジョブ起動⇒チャネルに対してデータ送信しても、ジョブフローがデータを読み込まず、という状況でしょうか?

    最初に問い合わせた際の事象はこちらになると思います。
    ジョブフローを手動で中止、開始したところ正常に処理されましたが、
    30分後に入ったキューは処理されませんでした。

    0
    コメントアクション Permalink
  • 草場敬之

    >新しく入ったキューが処理されない、という事象が発生しました。

    こちらですが、
    チャネル一覧で該当のチャネルを開くと、メッセージ数 1となっていますが、
    キューが読み込まれません。

    プロセス一覧から実行中のプロセス詳細を開き、ジョブフローのタブを開くと、
    以下のようなチャネル読み出しの行が黄色塗りされているため、チャネルからの受信待機中と思っていますが、
    こちらの認識は間違いないでしょうか。

    </system/channels/HogeHoge> ->

    0
    コメントアクション Permalink
  • 服部健太

    ご認識のとおりチャネル読み出しの行で黄色くハイライトされている場合、チャネルでの受信待ちとなります。

    状況を総合すると、Kompiraの動きがかなり怪しいのですが、Ver.1.6.1は新規インストールされましたでしょうか?

    また、/var/log/kompira/kompirad.log に何かエラーメッセージが出力されたりはしていないでしょうか?

    0
    コメントアクション Permalink
  • 草場敬之

    大量にエラーが出ていました。
    抜粋します。

    [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'

     

    0
    コメントアクション Permalink
  • 草場敬之

    >状況を総合すると、Kompiraの動きがかなり怪しいのですが、Ver.1.6.1は新規インストールされましたでしょうか?

    以前問い合わせさせていただいたように、
    新規サーバにv1.6.1をインストールし、v1.5.5からエクスポート&インポート後に、v1.6.1を再度インストールしています。

    以前の問い合わせ

    0
    コメントアクション Permalink
  • 草場敬之

    試しにチャネル受信待ち受けにtimeoutを追加したところ、正常に動作するようになりました。
    if文とselfでループさせてます。

    </system/channels/HogeHoge: timeout=10> =>
    0
    コメントアクション Permalink
  • 服部健太

    ご確認ありがとうございます。

    ログのエラーのうち、

    error occured when unpickling data: AttributeError("'Process' object has no attribute 'snapshot'",)

    につきましては、非チェックポイントモードで動作中のジョブフロープロセスが、サーバ再起動で再開できないことを示しているので、問題ありません。

    一方、

    PicklingQueue.__getitem__(0): caught a bytes-like object...

    のエラーの方は、チャネルのイベント待ち処理データがデコードできないことを示しております。原因としては、HogeHogeチャネルに以前のバージョンの古いデータが残っていて、それをインポートしたたために、当該事象が発生していると考えられます。

    タイムアウトを追加して正常動作するようになったということですが、念のためチャネルオブジェクトを作りなおした方(削除⇒新規作成)が良いかもしれません。

    以上、よろしくお願いいたします。

    0
    コメントアクション Permalink
  • 草場敬之

    ありがとうございます。

    チャネルを削除して再作成しました。

    暫く様子見してみようと思います。

    0
    コメントアクション Permalink

サインインしてコメントを残してください。