#2011·iii

建议: 条件性单键比较并设置用于状态

作者: hoangtung4398创建于 2026年7月24日更新于 2026年8月18日
标签state

□ 总结

我希望维护者指导增加有条件的单键状态 操作至iii。

操作将比较目前储存的 JSON 值。 " 范围 " 和 " 钥匙 " 有呼叫人提供的预期值,取而代之的是 新的完整值只有在结构上相等时。

主要目标是防止在工人中间出现全面记录的扭曲, 和共享权威状态后端的机器。

这个问题只要求调整。 没有执行或Pull Request 开始 。

□ 建议的语义

概念函数 :

页:1 状态: 比较和设置


概念投入:


接口 CompareAndSetInput <T=未知 > {
范围:字符串;
键:字符串;
预期值: T;
新值: T;
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

概念正常结果:

类型 StateCompareAndSetResult = {结果:"应用"} {结果:"冲突"} {结果:"未发现"};


需要的行为 :

- 比较完整的持续JSON值,而不是选定的字段;
- 仅在完整的预期值匹配时才替换该值;
在一个同键线性化点进行比较和替换;
- 按同键 " set " 、 " update " 、 " delete " 和其他条件序列
写作;
- 使用同一权威后端在工人和流程之间开展工作;
- 返回 " 冲突 " 而不返回目前储存的价值;
- 在不创建密钥的情况下返回“未找到”;
- 决不使用客户方的`获得 ' 和`set ' 来效仿这一行动;
- 永远不要无声地回到现有的`状态:更新'。

对象成员命令不会影响结构平等,而阵列命令
将仍然很重要。

□为什么现有的国家行动不够充分

被检查的公营国家API提供`Get'、`set'、`delete'、`update'和
列出操作。

现有的原子命令更新不接受调用人提供的预期状态
并且不返回一个明显的先决条件冲突结果。 客户端
" 获得 " / " 设定 " 序列无法防止一纸呆板的文字覆盖
干扰突变。

□ 适配器正确性

被检查的国营工人船只内置KV/档案、Redis和桥接器。

我目前的保守提议是:

页:1
所有( S)

所配置的适配器不应默默地提供更弱的语义.

另一种办法是,在没有支持的情况下明确发现能力。 适配器关闭失败,但这需要维护者批准的能力 合同。

□ 失败并重试行为

设计区分为:

  • 明知没有犯下确实的过失;
  • 在请求到达后端后未发现结果失败。

发送后的超时或响应损失不得自动报告为 一个明确的非文字。

客户不应盲目重试模棱两可的有条件突变. 他们应该 重读密钥并调和当前值是否等于预期值 值,请求替换,或第三个值。

□ 当前 . . . . . . .