【解決済み】計測タグを設置したSPAサイトでJavaScriptエラーが発生する障害が発生しています
Incident Report for KARTE
Postmortem

この度発生した「計測タグを設置したSPAサイトでJavaScriptエラーが発生する障害」について、下記の通りご報告致します。


発生期間
2022/1/13 22:34頃 〜 2022/1/14 12:24頃

対象のプロジェクト

  • SPAサイトにKARTE計測タグを設置しているプロジェクト

発生した現象

  • 計測タグが読み込まれたSPAのページで、_trackVisibilityChangeEventというメソッドに関するJavaScriptエラーが発生した

    • 明示的にtracker.view()を呼び出すSPAサイト以外では発生し得ないエラーだった
  • 特に、JavaScriptエラーのエラーハンドリングの実装次第では、当該JavaScriptエラーがSPAサイト自体の仮想的なページ遷移を止めてしまうケースがあった

    • ※たとえば、JavaScriptのerrorイベントをwindow.addEventListener("error", ...)などで捉えて後続処理を止めるような実装になっているケースなどでは、SPAサイト自体の仮想的なページ遷移を止めてしまった事例が確認されています
    • なお、tracker.js内の関数でエラーが発生しても後続処理に影響が出ないように、tracker.viewの実装は非同期になっていた

発生原因

  • エラーの発生原因としては、KARTE JS SDK(tracker.js)の実装に考慮漏れがあり、_trackVisibilityChangeEventというメソッド内で変数がnullになるパターンのnullチェックが漏れていたため

発見が遅れてしまった理由

  • サイトの実装によってJavaScriptエラーの発生有無やインパクトの大きさが異なるため、事象の発見が遅れてしまった
  • SPAサイトでのtracker.view呼び出しに関するテスト自体はあったが、今回の事象の発生条件を満たしていなかった

実施した対応

  • 早急な障害からの復旧のために、tracker.jsのバージョンを一時的に切り戻した(2022/1/14 12:24頃)
  • その後、問題があった修正を再修正し、「_trackVisibilityChangeEventというメソッド内で変数がnullになるパターンのnullチェック」を追加した上で、最新tracker.jsをリリースした(2022/1/14 14:00頃)
  • 本番環境でも当該エラーが発生しなくなったことを確認した

今後の対応

  • SPAサイトでのtracker.view呼び出しに関するテストを修正し、今回と同様の事象が再発した場合もすぐに検知できるようにします
  • tracker.js実装側のtracker.viewメソッド内でエラーをtry-catchすることで、tracker.viewメソッド呼び出し時に万が一エラーが発生した場合にもサイト側にJavaScriptエラーが渡らないようにします

この度はご迷惑をおかけしてしまい、誠に申し訳ございませんでした。

Posted Jan 17, 2022 - 15:30 JST

Resolved
障害が解消したのでご報告します。

■ 発生期間
2022/1/13 22:34頃 〜 2022/1/14 12:24頃

■ 対象プロジェクト
- SPAサイトにKARTE計測タグを設置しているプロジェクト

■ 対象機能
- 計測タグ(KARTE JS SDK)

■ 発生している現象
- 計測タグが読み込まれたSPAのページで、_trackVisibilityChangeEventというメソッドに関するJavaScriptエラーが発生する

■ 原因
- KARTE JS SDK(tracker.js)の実装に考慮漏れがあった

■ 実施した対応
- 一時的に、KARTE JS SDK(tracker.js)のバージョンを以前のものに切り戻した

この度はご迷惑をおかけし、大変申し訳ございませんでした。
なお、本障害の詳細や事後対応については、追って記載します。
Posted Jan 14, 2022 - 12:55 JST
Investigating
計測タグ設置サイトでJavaScriptエラーが発生する障害が発生しています。
想定される主な影響は次の通りです。

■ 対象プロジェクト
- SPAサイトにKARTE計測タグを設置しているプロジェクト

■ 対象機能
- 計測タグ(KARTE JS SDK)

■ 発生している現象
- 計測タグが読み込まれたSPAのページで、_trackVisibilityChangeEventというメソッドに関するJavaScriptエラーが発生する

現在、開発チームが原因を調査中です。
約1時間以内に続報を掲載します。
Posted Jan 14, 2022 - 12:24 JST
This incident affected: イベントトラッキング.