修正回合绑定失败被说成回包丢失
- ResponseDeliveryFailure 新增 interrupt_reason,按 cause 给回合终态说明 - 只有 response-write-failed 保留「执行许可回包丢失」;turn-bind-mismatch 改为说明回合绑定不一致、作用域无法确认 - 新增 response_delivery_failure_texts_match_their_cause 用例钉住两句文案 - 同步更新 shared-memory 决策记录里的收束说明口径
This commit is contained in:
@@ -322,6 +322,19 @@ impl ResponseDeliveryFailure {
|
||||
Self::TurnBindMismatch => "turn-bind-mismatch",
|
||||
}
|
||||
}
|
||||
|
||||
/// 写进回合终态说明的收束原因。
|
||||
///
|
||||
/// 两种失败对用户的意义不同:写失败是回包真的没送出去;绑定不一致是回包已经产出,只是宿主
|
||||
/// 无法确认它属于哪一轮。不能共用「回包丢失」这一句,否则报告会把绑定问题说成丢包。
|
||||
fn interrupt_reason(self) -> &'static str {
|
||||
match self {
|
||||
Self::Write => "执行许可回包丢失,不能确认原操作是否已执行。",
|
||||
Self::TurnBindMismatch => {
|
||||
"回合绑定与当前 app-server 不一致,无法确认本轮操作的作用域;已停止本轮执行。"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ExecutionAdapter {
|
||||
@@ -862,9 +875,7 @@ impl ExecutionAdapter {
|
||||
);
|
||||
let adapter = Arc::clone(self);
|
||||
tokio::spawn(async move {
|
||||
adapter
|
||||
.interrupt("执行许可回包丢失,不能确认原操作是否已执行。")
|
||||
.await;
|
||||
adapter.interrupt(cause.interrupt_reason()).await;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1898,4 +1909,14 @@ mod tests {
|
||||
assert!(key.contains("lease-admit-failed"), "{key}");
|
||||
assert!(!key.contains("/home/someone"), "留痕不得带绝对路径:{key}");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn response_delivery_failure_texts_match_their_cause() {
|
||||
assert!(ResponseDeliveryFailure::Write
|
||||
.interrupt_reason()
|
||||
.contains("回包丢失"));
|
||||
let bind = ResponseDeliveryFailure::TurnBindMismatch.interrupt_reason();
|
||||
assert!(bind.contains("绑定"), "{bind}");
|
||||
assert!(!bind.contains("回包丢失"), "绑定失败不是回包丢失:{bind}");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user