正在阅读Test the recovery, not just the interruption.
香港天气加载中…
QWeather ↗
← Back to the notebook

Test the recovery, not just the interruption.

Fault injection gets interesting after the fault. Define what recovery means from the host, data, and system perspectives.

Define the contract first

Before injecting a fault, write the system’s expected behavior for that specific configuration. Is temporary I/O delay acceptable? What maximum recovery time is agreed? Which errors should the application observe? Those answers come from the product’s contract, not a generic idea of high availability.

A green health indicator is useful, but it cannot replace checking the application’s outcome and the integrity of its data.

Observe the full timeline

  1. Baseline: confirm the workload, paths, and health before injection.
  2. Fault: record what actually changed and when.
  3. Transition: measure application errors, latency, and relevant state changes.
  4. Recovery: verify restored behavior against the agreed contract.
  5. Afterward: validate data and check for lingering degraded conditions.

Use clocks with a known relationship when correlating events across machines. Keep uncertainty visible if timestamps cannot be reliably aligned.

Use independent checks

Combine workload observations with system evidence. A test that declares recovery from the same status field used to trigger the next step can miss a misleading status transition.

Consider validating checksums or application-level invariants where they fit the workload. Record the exact validation method: a successful read is a different claim from a comparison against expected data.

ResilienceFault injectionStorage

This is an initial starter note, ready to expand with your own examples and experience.

MORE IN STORAGE & QAA failed test is a clue. Follow the evidence.