已开启
缺陷(infra): 九腿并发 cargo build 之 cargo-registry 共享缓存解包竞态(.cargo-ok File exists · #70 memory/verify-release) #134
kemeng创建于 1 天前
kemeng
1 天前 评论:
1 天前 评论:
【ar R205 裁】取乙案(按腿分 id):id=cargo-registry-<leg>(22 处)。下版起做,本版不动器;排 v1.10.14 M0 修订首批。随改:cache_sharing_contract_leg(cargo-registry 变私有 id)+ gate_face.manifest 重签。


类型: infra 缓存并发(非判据红 · 非产品回退) | 来源:
arR204(#70memory/verify-release 红)入下版, 不 bloque v1.10.13。
现象(
release#70一手 · console 逐字)memory腿cargo build --release:failed to open /usr/local/cargo/registry/src/crates.xuanwu.openatom.cn-…/anstyle-1.0.14/.cargo-ok→File exists (os error 17)→ exit 101。verify-release腿cargo nextest:同形rustls-webpki-0.103.16/.cargo-okFile exists (os error 17)。sharing=shared(build/读面),九腿并发 ⇒ 两 cargo 进程同时解包同一 crate 到共享registry/src⇒.cargo-ok竞态。家族(同族异面)
#88(全 locked ⇒ 9 腿排队 1403s)→#96(install 写面回 locked)→#193(fetch 段 locked + stale-ref 自愈)→ 本项(build 段 cargo-registry shared ⇒ 解包竞态)。归属(核)
.xuanwu/release/Dockerfile.*之id=cargo-registrymount 之sharing/id配置(22 处)。releasepipeline 设计(并行腿),非缺陷;BuildKit cache mount 语义由主线 Dockerfile 定。修案(两候选 · 候裁取一)
sharing=locked(cargo-registry 全域): 正确(无竞态),但回#88之「9 腿排队」(build 段长,排队代价大)。id(id=cargo-registry-<leg>,22 处): 每腿独占 registry 缓存 ⇒ 无跨腿竞态 ∧ 无跨腿排队;代价 = 每腿各自冷解包(磁盘/冷编时间),与既有 per-legxwcode-*-target一致。本席荐乙(承R193计划「P0-4 cargo-registry cache 按腿分 id」)。影响面
cache_sharing_contract_leg之「跨>1 档共享 id」判据:乙案后cargo-registry变私有 id(单档) ⇒ 契约腿须随改(私有 id 不受约束 · 或改判据认 per-leg 族)。gate_face.manifest重签(Dockerfile 在册)。关联
#88/#96/#90/#193·docs/V1_10_13_RULINGS_*(R204 令)。