Repository navigation
fix: align BNS device resolution and RTCP failure diagnostics - #212
Conversation
|
基于本 PR 的 修复方向正确:本次直接问题主要是 BNS 协议迁移未收尾,以及 RTCP 的后一段错误覆盖前一段错误。NameClient 拒绝错类型文档的行为应该保留。 当前协议明确要求设备槽位联合校验只用于显式 时间线需要区分:本 PR 的 base 已支持显式 目前还有三处需要补齐。以下均为本 PR 修复范围内尚未覆盖的既有问题,不是断言本 PR 新增了回归:
机制方面还需保持独立跟踪。 但 #207 的 Relay 自转发事故也暴露过机制缺口:设计记录 已明确修订锁跨 I/O 和缺少 验证:在该 PR checkout 上, |
|
已按这次 review 在提交 a3b54cae 中补齐三处问题,PR 描述和 BNS API 文档也已同步更新。
本地离线回归共 103 passed、3 ignored:
新增反例在修复前可复现、修复后通过, 同意 review 对时间线和验收范围的区分:base 已支持显式 device 投影;本 PR 清理旧的错类型兼容行为并保留两阶段失败原因,历史查询修正不作为 RTCP current 查询冲突的直接原因。严格类型/身份校验和 |
BNS resolver 的协议迁移尚未收尾:本 PR 的 base 已支持显式
type=device投影,但仍为旧客户端保留缺省/type=zone的设备槽投影;RTCP 的 zone 回退错误还会覆盖首个 device 查询失败。本 PR 移除错类型兼容行为、保留两段诊断,并补齐评审指出的三个 HTTP 适配缺口。type=device使用父 Zone 的设备槽映射,保留独立子名字优先、签名、成员关系和投影一致性校验。DOCUMENT_INCONSISTENT与确定性身份/类型错误统一返回invalid + reason,不返回正文;真实依赖故障和投影变化保留 5xx。已经 revoked/tombstoned 的终态优先于旧正文错误,继续返回 410。400 ambiguousDocType。排除已撤销、过期与历史版本,不触发父设备槽映射。该能力覆盖 contract/indexer 两个 HTTP 入口,不新增 kRPC wire method。验证(均使用
CARGO_TARGET_DIR=/tmp/sn48-cargo-target,未运行 cargo fmt):cargo test --offline -p bns-server -- --test-threads=1:51 passed,3 ignored。cargo test --offline -p bns-indexer --test centralized_registry -- --test-threads=1:21 passed。cargo test --offline -p bns-client --test rpc_and_controller -- --test-threads=1:27 passed。cargo test --offline -p cyfs-gateway-lib --lib handshake_document -- --test-threads=1:4 passed。git diff --check通过。关联 buckyos/sn-business#48。Relay device.json 的生成、旧身份补齐和分发清单已在 SN-Business 单独修复。这些修改不能单独证明现场首个 device 查询已恢复:真实 keep-tunnel / 公网 HTTPS 验收按用户要求由 issue 发起者在资产推送与相应程序部署后完成。
AuthorityCurrent 与严格类型/身份校验保持不变。IndependentControlPlane 及 TrustedSnapshot/后台确认仍需单独跟踪,本 PR 不作为整个 Relay 回流问题已经闭环的验收依据。