ITSUKI.
技術751 文字2 分

Day 27|Failure Injection — 失敗を、狙った場所で起こす

#Codex#ソースコードリーディング#図解

この章しょうの答こたえ

失敗しっぱいの位置いちを固定こていすると、回復かいふく処理しょりを繰り返くりかえし検証けんしょうできる。

偶然ぐうぜんネットワークが切きれるのを待まっても、同おなじ失敗しっぱいを何度なんども再現さいげんするのは困難こんなんです。失敗しっぱいを差し込さしこむ境界きょうかいを選えらび、どこまで状態じょうたいが変かわったかを固定こていすれば、回復かいふく処理しょりの意味いみを検証けんしょうしやすくなります。

01|図でつかむ

図27|Failure Injection

失敗しっぱいを起おこした瞬間しゅんかんだけでなく、その後のちに作業さぎょうが進すすめるかまで見みる。

02|3つのポイントで理解する

1. 差し込む境界を決める

入力にゅうりょく検証けんしょうで失敗しっぱいするのか、保存ほぞん処理しょりで失敗しっぱいするのかによって、検証けんしょうできる回復かいふく処理しょりが変かわります。変更前へんこうまえの失敗しっぱいを作つくっているなら、変更後へんこうごの失敗しっぱいまで確たしかめたとは言いえません。

2. 準備する状態の妥当性を確認する

原稿げんこうは InProgress の turn を使つかう演習えんしゅうを紹介しょうかいしています。現在げんざいの実装じっそうが同おなじ条件じょうけんで拒否きょひするかを先さきに確認かくにんし、存在そんざいしない経路けいろを無理むりに作つくらないようにします。

3. 回復後のライフサイクルを追う

エラーが表示ひょうじされたあと、入力にゅうりょく欄らん、履歴りれき、キュー、次つぎの操作そうさがどうなるかを確認かくにんします。復元ふくげんの二重にじゅう実行じっこうや、あとから届とどくイベントとの競合きょうごうも観察かんさつ点てんになります。

03|ソースで確かめる

以下いかの検索けんさくは Codex リポジトリのルートで実行じっこうします。最初さいしょに対象たいしょう commit を記録きろくし、検索結果けんさくけっかから定義ていぎと呼び出よびだし元もとを一ひとつずつ開ひらいてください。

git rev-parse --short HEAD
rg -n "TurnStatus::InProgress|thread_revert" codex-rs

読よむ入口いりぐち: codex-rs/app-server/src/request_processors/thread_processor.rs 。リンク先さきは照合しょうごうに使つかった固定こてい commit のファイルです。手元てもとの版はんと異ことなる場合ばあいは、上うえの検索語けんさくごから探さがし直なおします。

小さく試す

失敗しっぱい直前ちょくぜん・直後ちょくご・次つぎの入力にゅうりょくの三時さんじ点てんで、変かわるべき状態じょうたいと変かわってはいけない状態じょうたいを書き出かきだします。

04|30秒で復習

  • 失敗しっぱいを差し込さしこむ位置いちを固定こていする。
  • 状態じょうたい変更へんこうの前まえか後あとかを明確めいかくにする。
  • 回復後かいふくごの次つぎの操作そうさまで確たしかめる。

全ぜん30章しょうの目次もくじへ