Skip to content
Latchkey

CIのnetwork blipとは? 解説

network blipは、切断された接続や一瞬のDNSの不調といった、短く一時的な接続障害で、CIのステップを妨げた後に自然に解消します。

CIのjobは、リポジトリのクローン、パッケージのインストール、イメージのプル、APIの呼び出しなど、絶えずネットワーク越しに手を伸ばします。ネットワークは完璧に信頼できるわけではないため、時折それらの呼び出しの1つが一瞬失敗します。その短い障害、つまりblipは、赤いbuildの最も一般的な一時的原因の1つです。

blipがどう見えるか

  • ダウンロード中の接続のリセットや拒否(ECONNRESET、ECONNREFUSED)。
  • 一瞬失敗するDNSルックアップ(EAI_AGAIN、getaddrinfo エラー)。
  • 健全なはずのホストに対してタイムアウトするTLSハンドシェイク。
  • 通常は即座に完了するリクエストでの読み取りタイムアウト。

blipが起こる理由

一時的なパケットロス、ルートのフラッピング、一瞬飽和したリンク、接続をリサイクルする上流のロードバランサ、これらはすべて短い障害を生み出します。肝心な言葉は「短い」です。基盤となる経路は正常で、jobがたまたま呼び出したときに一瞬だけ調子が悪かっただけです。

retryが通常うまくいく理由

blipは定義上一瞬のものなので、同じリクエストを1秒後に行えば通常は成功します。これがnetwork blipを教科書的な一時的障害にします。入力は有効で、コードは正しく、ネットワークのタイミングだけが障害を引き起こしたのです。

blip vs 障害

blipは短く自然に解消する中断で、障害は持続的なものです。retryはblipを解消しますが、進行中の障害は解消できないため、retryはバックオフを伴って上限を設けるべきです。retryが失敗し続けるなら、おそらくblipではなく本物の障害を見ているのです。

Latchkeyの観点

network blipは、Latchkeyの自己修復するマネージドrunnerの格好の対象です。プラットフォームが一時的なネットワーク障害を検出して、影響を受けたjobを自動でretryするため、クローン、インストール、イメージプル中の一度きりのblipがbuildを失敗させません。

重要なポイント

  • network blipは、自然に解消する短く一時的な接続障害です。
  • 接続のリセット、DNSの不調、ハンドシェイクのタイムアウトとして現れます。
  • 一瞬のことなので、retryで通常は成功します。
  • blipは、retryでは解消できない持続的な障害とは異なります。

関連ガイド