Foreshock
EN 订阅
文档

运维

数据降级或陈旧时

每一个降级信号是什么意思、该怎么办,以及那个永远不存在的补救办法。

更新于
2026-08-24

降级是一种正常运行状态,不是事故。它有确定的形状,总是被披露,并且总是朝着挂起而不是贷记的方向收敛。

信号

信号出现在哪意味着什么
Foreshock-Coverage-Health: degraded筛查与裁决接口的响应头该请求作用域内至少有一个权威不可观测,或超出其滞后 / 核验阈值。
observable: falsecoverage_health 条目该权威当前对我们不可观测。
verified_at 超出窗口coverage_health 条目该权威的注册条目未按时重新核验。
collector_lag_s 异常coverage_health 条目我们对该权威的视图落后于链上状态。
coverage.health_changedWebhook上述之一发生了变化。这是盲区通知。
stage: STALEexposure.revoked webhook某条匹配背后的数据已不可信。

六个降级 reason code 分别怎么办

六个都在 HTTP 200 下产生 HOLD。裁决本身已经是对的;不同的是什么能解除它。

Code什么能解除在此期间你做什么
SCREENING_DEGRADED筛查来源恢复。挂起。恢复后重新裁决。
BUDGET_EXHAUSTED预算周期滚动,或你有意调高。挂起。见预算耗尽。
LIST_STALE更新的名单落地。挂起。跨周期持续则升级。
REGISTRY_ENTRY_STALE注册条目被重新核验。挂起。
COVERAGE_BLIND_SPOT该权威重新可观测。挂起。记录哪个作用域盲了、盲了多久。
DECISION_TIMEOUT下一次调用在预算内完成。挂起。重新裁决。

required_actions 里出现 RE_DECIDE_AFTER_RECOVERY 就是为了这件事:降级解除后,用一个新的幂等键再调一次裁决接口。不要凭之前那次尝试贷记。

正确地读那个响应头

Foreshock-Coverage-Health 是指针,不是报告。为 degraded 时,转 GET /v1/coverage 取逐权威的明细,再判断受影响的作用域对眼前这笔入金是否要紧。

degraded 不会让你刚收到的裁决失效。裁决仍然成立。这个响应头告诉你的是,它是在可见性下降的情况下得出的——这是复核人需要的信息,也是事后时间线会用到的信息。

「回退到更保守的策略」需要事先定义

「更保守」要在你需要它之前就有定义,不是在事发当中。提前写下来:

  • 哪些资产与链的作用域,在其权威不可观测期间完全停止贷记
  • 覆盖降级时,哪个金额阈值下调
  • 谁被呼叫,降级持续多久之后呼叫
  • 你怎么告诉受影响的用户,什么时候告诉

在事故当中现编的回退策略,是由当时还醒着的那个人在压力下谈出来的策略。

那个不存在的补救办法

没有任何配置、套餐、参数或工单,能把一个降级的输入变成 CREDIT。不存在允许在降级时贷记的 reason code,将来也不会增加。

如果穿越降级持续挂起造成了不可接受的队列,可调的变量在你这一侧或在注册范围里——你登记的作用域、你设的阈值、你配的复核人力。为了清队列而放宽阈值不是修复,那是把闸门本来要防的失败,主动做了一遍。