H3.13.2per-item retry after partial failure设计

失败项需提供单独重试的入口而非要求整体重来

别名: 单项重试 · retry failed only · 不要整批重来

概念解释

十七项已经成功,三项失败,下一步应是对这三项再试或改完再试,而不是把二十项再提交一遍。单独重试把恢复作用域收在失败集合上。整批重来会把已成功项再送一次,非幂等时制造重复副作用,幂等时也浪费并制造新的部分失败。这条管恢复入口的作用域,不管列表上状态怎么画。

机制

人在部分失败后的目标是补洞,不是重做整张图。若唯一按钮是「再试一次」且作用在原选择集上,成功项会再次进入流水线。对端若没有去重,洞补上的同时出现双份。作用域限定在仍失败的 ID 列表,成功项保持不动。入口要就近:在失败项上或在「重试 N 项失败」的集合动作上,而不是回到批量模式从头勾选。整批重来还摧毁人对「哪些已经好了」的记忆,核对成本回到零。

边界

事务性批量(要么全成要么全撤)没有「已成功项」,单独重试没有对象,应改为整笔再提交并说清。失败原因若是权限或规则,重试按钮应先指向修改,而不是盲目再打同一请求。进行中的项不是失败项,不能被「重试失败」卷进去。

怎么落地

  • 混合结果上提供「重试失败项」,载荷只含仍失败的标识;成功项不再发送。
  • 单项上也放重试,便于只处理其中一条。
  • 非幂等的失败项重试前先查询该项状态,已成功的从失败列表拿走。
  • 验证:十七成三败之后点恢复。服务端若又收到那十七个 ID,入口就还在整批重来。

延伸

  • 同组H3.13.1 批量操作中部分失败需要逐项标明成功与失败状态 · H3.13.3 部分成功的结果不应被汇总为笼统的失败提示 · H3.13.4 处置策略需要明确失败项是否已产生副作用
  • 相邻H3.10 重试策略 · H8.02 批量操作 · H1.07 提交防重复
  • 站内检索retry failed items · partial failure · idempotency

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/H3.13.2