添付ファイルフィールドのファイルダウンロードに失敗することがある
標題の件、以下のような事象がたまに発生するのですが、どのような原因が推察されますでしょうか?
ご教示いただければ幸いです。
■事象
・Kompira サイト上から、添付ファイルフィールドにアップしているファイルをダウンロードするときに、ネットワークエラーで失敗することがある
・失敗の際は、ブラウザのダウンロード履歴がファイル名ではなく、[<添付ファイルフィールド名>] で「失敗 - ネットワークエラー」となる
・失敗になった後、ブラウザのリロードや一度別ページに遷移させて(一覧画面→詳細画面など)再試行すると、問題なくダウンロードできる(成功の場合は、通常通りダウンロード履歴は実際の添付ファイル名となる)
・事象発生時にサーバ側のログ(kompiraログ、httpdログ)やクライアント側(ブラウザ)のコンソールログを確認したが、特にエラーに関わるメッセージが出ておらず原因が掴めない
・複数のネットワーク環境でも同じ事象が発生する(特定のKompira運用環境だけ発生するというわけではない)
■環境
Kompira Enterprise ver. 1.6.12 post1
使用ブラウザ:Google Chrome (140.0.7339.81) / Microsoft Edge 143.0.3650.75
-
正式なコメント
調査の結果、おおよその原因がわかりました。
※ただし、以下は chrome での調査結果であり、他ブラウザでは異なる挙動する可能性があります。添付ファイルフィールドは画面上では <a> タグに download 属性を付けたリンク(以下 <a download> と表記)となっており、クリックすると(ページ遷移ではなく)保存できるようにしています。
この <a download> タグ押下によるダウンロードを行うとき、HTTP 接続が何らかの理由で切断している場合などに「ネットワークエラー」となりダウンロードに失敗するようです。(切断の理由としては、httpd サーバがダウンしたとき、HTTP の Keep-Alive セッションがタイムアウトしたとき、など他にも考えられるかもしれませんが、環境や状況によるので特定はできません)
画面上の通常のリンク押下では、たとえ元のHTTP接続が一時的に切れていたとしても自動的に再接続するため(接続が回復できる状況では)操作上問題になることはありません。しかし、<a download> タグ押下などで「ダウンロード」になる場合は通常のページ遷移とは異なる扱いになるようで「自動的に再接続する」という振る舞いは無く、たとえ接続が回復できる状況でもダウンロードに失敗してしまうようです。
そのため、一度リロードしたり別の画面に遷移すると、接続が回復してその後はダウンロードが成功するようになる、という現象とも辻褄が合います。
再現方法としてはダウンロードリンクを含むページを表示させた状態で、httpd サーバを意図的にダウンさせると、<a download> タグ押下時に「ネットワークエラー」になります。httpd サーバを再起動させても同じ状況は続きますが、別ページへの遷移はできてその後はダウンロードできるようになります。
こうした調査結果をもとに、以下のような対策を検討しています。
- <a download> 押下によってダウンロードを開始する前に、サーバに対する(ダウンロード処理にもページ遷移にもならない)通常アクセスを試みる
- 上の通常アクセスでは元のHTTP接続が一時的に切れていたとしても自動的に再接続するため、それが成功した場合に(<a download> 押下による)ダウンロード処理を再開させる
手元の実験ではこの対策で、HTTP接続が回復可能な状況においては、ダウンロード時のネットワークエラー問題は改善することが確認できました。
さらなる調査と評価を進めて、次回以降のリリースに含められるようにしたいと考えています。
※ ブラウザ側の挙動に依存する話ですので、やはり KE2.0 系でも同様の事象は発生しうると思いますし、同様の対策が有効であろうと考えています。
※(追記)Mac の safari および chrome では上記のような現象にはならず、ダウンロード処理においても自動再接続が機能しているように見受けられて、接続が回復できる状況においてはネットワークエラーは発生しませんでした。
コメントアクション -
フィックスポイントの高橋です。
・Kompira サイト上から、添付ファイルフィールドにアップしているファイルをダウンロードするときに、ネットワークエラーで失敗することがある
・失敗の際は、ブラウザのダウンロード履歴がファイル名ではなく、[<添付ファイルフィールド名>] で「失敗 - ネットワークエラー」となる
・失敗になった後、ブラウザのリロードや一度別ページに遷移させて(一覧画面→詳細画面など)再試行すると、問題なくダウンロードできる(成功の場合は、通常通りダウンロード履歴は実際の添付ファイル名となる)これらの現象について、弊社の環境でも発生する場合があることを確認しました。
タイミングやブラウザ動作に依存する問題であるようにも感じられますが、現時点では詳細については判明しておりません。
調査のうえ何らかの改善ができないか検討したいと思います。
-
v1.6.13 で本事象に対する改善対策を行なっております。
ただし、動作環境に大きな変更がありますので、その点ご留意のうえアップデートをご検討ください。
サインインしてコメントを残してください。
コメント
7件のコメント