質問
⚠️ この事例は公開されてから1年以上経過しています。 情報が古い可能性がありますので、ご注意ください。
🕓 事例公開日 : 2024-04-09
【背景】
BloomMakerで作成した画面からLogicDesignerのフローを呼び出し、その中でSOAPClientを使った外部連携を実装している。SOAP通信で排他エラーが返ってくる問題が起きており、調べたところLogicDesignerのフロー全体が2回動いていることが判明した。ブラウザのデベロッパーツールで見る限りリクエストは1回しか送っていないのに、なぜかサーバー側で2回処理されてしまう。SOAP通信が2分以内に完了する場合はエラーにならないが、それ以上かかるとエラーになる。Q1.
LogicDesignerのフローが2回実行されてしまう原因として何が考えられますか? LogicDesignerには処理に時間がかかった場合に自動でリトライする仕組みがありますか? もしそのような設定があれば教えてください。Q2.
フローが2回実行されていることはどうやって確認すればよいですか? また、調査に必要な情報は何ですか?回答
A1.
お客様環境のリクエストログを確認したところ、LogicDesignerのルーティング定義に対するリクエストが実際に2回到達していることを確認しました。1回目のリクエストから約3分19秒後に2回目のリクエストが発生しています。ブラウザ側では1回しかリクエストを送信していないにもかかわらず、サーバー側で2回受信しているということは、Accel-Mart Plusの個社環境に到達する前の通信経路上でリトライが発生している可能性が高いです。
お客様側のネットワーク経路(プロキシサーバー、ロードバランサー、ファイアウォールなど)でタイムアウト設定やリトライ設定がないかご確認ください。
参考事例として、プロキシサーバーを経由している環境で、プロキシ側のタイムアウト設定により自動的にリトライが発生したケースがございます。特に処理に時間がかかるリクエストの場合、プロキシやロードバランサーがタイムアウトと判断して再送することがあります。
なお、LogicDesigner自体には処理時間に応じて自動的にリトライする機能はございません。
A2.
フローの2回実行を確認するには、以下の情報をご確認ください:1. 事象発生日時
正確な発生日時(秒単位まで)を記録してください。
2. LogicDesignerのログ
フロー内でログ出力を設定している場合、同じログが2回出力されているかを確認してください。また、1回目と2回目の実行開始時刻の間隔を測定してください。
3. エラー内容
SOAP通信で発生しているエラーの詳細(エラーメッセージ、エラーコードなど)を記録してください。
4. ブラウザのネットワークログ
デベロッパーツール(F12)のネットワークタブで、リクエストが何回送信されているかを確認してください。
詳細な調査方法については、以下のドキュメントをご参照ください。
Accel-Mart Plus お問い合わせガイド - 問い合わせに必要な情報の準備