记录注册表自动创建的并发窗口
export/registry.rs:在 load_or_create 注释里写明 NotFound 到原子写入之间被并发覆盖的窗口属于明确接受,与 xhs_minitool::registry::save 的口径一致。
This commit is contained in:
@@ -61,6 +61,12 @@ pub(crate) fn content_hash(text: &str) -> String {
|
||||
/// 读注册表;文件不存在时先用 `empty` 的规范序列化补一份空注册表,再读回来。
|
||||
///
|
||||
/// 「自动创建」是产品要求:面板一打开就要能显示空表单,而不是先报「文件不存在」。
|
||||
///
|
||||
/// 这里明确接受一个并发窗口:`read_to_string` 返回 `NotFound` 到下面 `write_atomically` 之间
|
||||
/// 没有锁,如果这期间别的写者(code agent 的脚本、并发的保存命令)抢先建好了同一个文件,本次
|
||||
/// 写入会用空注册表把它盖掉。不为此加锁或改成「原子重读 + 比较」:注册表本来就是用户与 agent
|
||||
/// 共写的本机文件,真撞上时重新读一次就能看到最新内容,写入门禁级别的并发保证成本高于收益
|
||||
///(目标模块 `xhs_minitool::registry::save` 对同类窗口也是明确接受)。
|
||||
pub(crate) fn load_or_create<T>(path: &Path, empty: &T) -> Result<Loaded<T>, RegistryError>
|
||||
where
|
||||
T: Serialize + DeserializeOwned,
|
||||
|
||||
Reference in New Issue
Block a user