中断と推定されるフロー状態の理解と解決<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: block; max-width: ; width: auto; height: auto; } } 最新情報については、「 フロー実行の詳細」を参照してください。 推定中断 (Presumed Interrupted) 状態について 以前は、フローの実行が予期せず中断された場合、フローコンテキストのステータスは [処理中] のままでした。これはユーザーに誤解を招くものです。予期しない中断は、トランザクションの終了時またはノードの再起動時に発生する可能性があります。 sys_flow_contextテーブルの新しい中断推定ステータスは、中断されたフロー実行を識別するのに役立ちます。この状態は、フローがキャンセルされたことを意味するのではなく、まだ実行中であるか、後で再開される可能性があります。 この状態は、フローが長時間実行されており、スタックしているように見えることを示しています。考えられる原因は次のとおりです。 ノードの再起動またはフロー内の無限ループこのフローは、別のビジネスルールまたはフローをトリガーしました Utah リリース以降は、ノードがシャットダウンまたは再起動するときにフローを一時停止および再開できます グレースフルシャットダウン機能 この機能は、MID サーバーでの実行中に中断されるフロー実行には適用されません。この機能はフローエラー処理をトリガーしません。可能な場合はフローを再開できるように設計されています。 仕組み トランザクションとclaimed_byの 2 つの新しい列がsys_flow_contextに追加されました。フローエンジンがフローコンテキストで作業を開始すると、次のようになります。 sys_flow_context.claimed_by フィールドはノード ID に設定されます。sys_flow_context.transaction フィールドは現在のトランザクションのsys_idに設定されます。 フロー実行が MID サーバーに送信される場合、[ claimed_by ] フィールドは mid に設定されトランザクション フィールドは空のままです。 中断が疑われるフローコンテキストは、そのステータスが [中断と推定] に変更されます。システムは、「フロー状態が非アクティブのため、IN_PROGRESSからPRESUMED_INTERRUPTEDに変更されました...」で始まるエラーメッセージをログに記録します。 設定された間隔で、中断されているように見えるフロー実行がないかsys_flow_contextテーブルでチェックされます。 次の 2 種類のチェックが実行されます。 このノード チェックは 15 分ごとに実行され、次の基準を満たすフローコンテキストを検索します。 corrent ノードによって要求ステータスがIN_PROGRESSまたはCONTINUE_SYNCである前回の更新が 15 分以上前現在のノードで無効になったトランザクション ID があります その他のノード チェックは 1 時間ごとに実行され、ノードのシャットダウン中にフローの実行が中断され、ノードが再起動されないケースを処理します。次の基準を満たすフローコンテキストが検索されます。 別のノードによって要求されていますステータスがIN_PROGRESSまたはCONTINUE_SYNCである8 時間以上前の最終更新 有効なトランザクション ID は実行中のノードでのみ使用できるため、トランザクション ID を確認できません。 注意:フローステップ (スクリプトなど) が 8 時間以上実行されると、誤って中断と推定されることがあります。これが発生した場合、ステップが完了すると、ステータスは想定される値に戻ります。 中断と推定されるフローを解決する方法 トランザクション (sys_flow_context.transaction) がノード (sys_flow_context.claimed_by) でまだアクティブかどうかを確認します。 アクティブな場合: フローが無限ループに陥っている可能性があります (問題のあるスクリプトまたはループ条件が原因)フローをキャンセルフローをリファクタリングして再実行 アクティブでない場合: 現在のノードが再起動されたか、適切に処理されなかった不明なエラーが発生しましたフローの実行が停止された残りのフローを手動で完了します中断のポイントからサブフローを作成します。たとえば、フローに 10 個のステップがあり、ステップ 5 で停止した場合は、ステップ 5 〜 10 のみを含むサブフローを作成します。 ローカルホストのログは、次のコマンドを使用してノードがシャットダウンされたか再起動されたかを特定するのに役立ちます。 egrep “glide Loading platform|Initiating normal shutdown” localhost_log.2019-0*.txt 構成可能なシステムプロパティ 中断と推定されるフロー状態機能では、次の構成可能なシステムプロパティを使用します。 プロパティ説明デフォルト値com.glide.hub.flow.interrupted_flow_marker.enabled機能を有効または無効にしますtruecom.glide.hub.flow.interrupted_flow_marker.this_node.updated_sec_ago「このノード」チェックの前回の更新後の最小時間900 秒 (15 分)com.glide.hub.flow.interrupted_flow_marker.other_nodes.updated_sec_ago「他のノード」チェックの前回の更新後の最小時間28800 秒 (8 時間)