質問
Gmailコネクターの「メール受信(IMAP4)」処理で「javax.mail.MessagingException: * BYE JavaMail Exception: java.net.SocketTimeoutException: Read timed out」エラーが頻発します。原因と対処方法を教えてください。
回答
このエラーは、Gmail OAuth 2.0認証コネクションを利用したGmail IMAPサーバーへのログイン処理、またはメールフォルダーへのアクセス処理において、処理時間がコネクションのタイムアウト値を超過した場合に発生します。
本事象の原因として、該当アカウントに対する継続的なアクセスにより、Gmail側サーバーで高負荷やスロットリングが発生し、処理時間が長期化している可能性が考えられます。
エラーログの「messageErrorDetail」には以下のような内容が出力されます。
Caused by: com.sun.mail.iap.ConnectionException: * BYE JavaMail Exception: java.net.SocketTimeoutException: Read timed out at com.sun.mail.iap.Protocol.handleResult(Protocol.java:442) at com.sun.mail.imap.protocol.IMAPProtocol.handleLoginResult(IMAPProtocol.java:1065) at com.sun.mail.imap.protocol.IMAPProtocol.authoauth2(IMAPProtocol.java:962) at com.sun.mail.imap.IMAPStore.authenticate(IMAPStore.java:921)
これはOAuth認証を利用したログイン処理でタイムアウトが発生していることを示しています。
HULFT Square側の対策としては、コネクションのタイムアウト設定値を現在の値より大きく(例:100000ミリ秒)設定することで、タイムアウトによるエラーを回避できる可能性があります。
タイムアウト値を長期に設定した場合、長時間のコネクター処理がサービスのリソースを消費し続けて影響を及ぼす場合があるため、Gmail IMAPサーバー側の処理遅延が解消され次第、タイムアウト設定を元に戻すことを推奨します。
タイムアウト値の変更以外では、HULFT Square側でご案内できる回避策はございません。
Gmail側のサーバー状況(OAuth 2.0アクセストークンによる認証に時間を要する状況、高負荷やスロットリングの発生有無)については、Googleベンダーへお問い合わせいただき、処理遅延の解消が可能かご確認いただきますようお願いいたします。
補足
■タイムアウトエラー発生時のメール既読・送信実行の動作について
Gmailコネクターはトランザクションをサポートしていないため、タイムアウト等のエラーにより処理が中断された場合、ロールバックは発生せず、サーバー側で実行されている途中までの処理は実行されます。これはGmailコネクターの仕様です。
- タイムアウトエラー発生時にメールが既読になる動作、および送信エラー時に実際にはメールが送信される動作は、この仕様に起因します。
- ただし、ログイン認証処理でのタイムアウトエラーが原因の場合、メールアイテムへのアクセス処理が実行される手前でエラーとなるため、既読となる動作は発生しないと想定されます。
■Gmail稼働状況の確認先(※外部サイト)
- Google Workspace ステータス ダッシュボード: https://www.google.co.jp/appsstatus/dashboard/
- Gmail downdetector(障害報告サイト): https://downdetector.jp/shougai/gmail/
■関連FAQ
コメント
0件のコメント
記事コメントは受け付けていません。