失败与重试
以同一操作恢复未知结果,按资源所有权执行 DETACH 清理。
本页使用公开 SDK 25.2.0、生命周期 15.0.0 和网关资源凭据 API 6.0.0。首次签发原文随 AFTER_RESOURCES 下发;已有凭据不再下发原文,丢失时显式申请新 token。各环境须完成对应服务和登记切换后使用,源码或文档发布不代表环境已经激活。
正常阶段与失败占用
生命周期只有 INSTALL、UPGRADE、CONFIGURE、DETACH,每次操作经过
BEFORE_RESOURCES 和 AFTER_RESOURCES。业务逻辑按照操作类型和阶段执行。
请求和响应没有 intent;不再登记或调用独立的操作结束接口。
网络超时可能发生在实际写入之后。安装、升级和配置操作保存失败或未知结果,停止后续阶段并保留占用。卸载按下述平台清理边界处理。
重试使用同一 operationId + stage 和同一 executionSequence;内部派发记录变化不产生新业务操作。
管理器返回既有业务结果和获授权属性,不重复创建租户、不猜测完成状态。
按阶段定位引用错误
先区分“合法未绑定”与“实际解析失败”,再决定修复位置:
| 发生阶段与事实 | 结论与处理 |
|---|---|
| 定义安装因缺少 Interface 引用失败 | Runtime Owner 或管理器的阶段校验不符合安装合同;修正拒绝空引用的校验,保留 FAIL_FAST |
| 显式绑定时目标不存在、身份不符、值形状错误或无权访问 | 修正本次目标、输入或权限;不能把错误转换成空绑定或伪造成功 |
| 配置已提交,但后续管理器通知失败 | 分别记录配置提交与通知结果,修复失败阶段;不能只凭属性保存成功报告功能可用 |
| 清空引用后,依赖它的业务调用返回未绑定 | 符合预期;需要该功能时显式重新绑定 |
| 清空成功后仍调用旧目标 | 管理器保留了旧本地访问配置;检查是否将完整投影错误地当成增量合并 |
| 无关功能被未绑定属性阻塞 | 业务入口错误地要求全部引用就绪;按该功能实际需要检查配置 |
没有默认值、required: true、通信视图中的 credentialProperties 和 FAIL_FAST 都不能证明安装必须先绑定。
bundle install --config 保存 Bundle 安装配置,不等同于模块属性绑定;
--confirm-unverified 确认分发版本状态,不改变生命周期输入。不要通过反复试参数、预置目标或放宽失败策略绕过阶段错误。
保留管理器身份、阶段、操作关联和原始错误,对照未绑定引用与失败策略定位责任方。
凭据交付失败排查
先核对当前登记协议、完整安装、当前来源关系和本包资源归属,以及交付中的 tokenId。正常升级未返回原文不是失败;本地同作用域和 tokenId 的秘密可继续使用。
首次响应失败或本地秘密丢失时,显式调用 /bundle-plugin-manager/api/resource-credentials/6.0.0/issue。平台只存哈希,旧原文无法恢复;同一 requestId 的重放也不返回原文。需要新值时以新 requestId 明确补签,只替换自己的 token。
HTTP 200 不等于成功,必须检查 CModel errorCode。仅记录必要关联身份和脱敏错误,不记录 token 或完整请求。正常业务发送和重试不得自动调用 issue、rotate 或旧引用解析接口;授权撤销和归属不符应直接失败。
所有者写入顺序
executionSequence 是 Runtime 提供的正整数操作顺序;管理器不能按 UUID、时间戳或自身计数器重新推断顺序。
所有者把顺序校验、业务写入和业务回执放在同一数据库事务或具有相同隔离保证的操作中。
同一安装资源只接受当前操作的相同动作重试,较旧操作的迟到请求不得继续修改业务状态。
后台缓存、凭据刷新和调度器也必须服从实际业务记录的当前状态。
DETACH 串行接管
失败的安装、升级或配置可以由 DETACH 在 Runtime 的同一互斥边界内接管。 清理范围包含当前实际资源及失败操作可能已创建的中间资源。被接管的操作不能重试、写回输出或提交完成。 所有者保留顺序记录,即使此前没有创建业务实例,也能拒绝迟到的首次创建请求;不得为清理伪造业务租户。
DETACH 的平台资源清理失败时仍保留占用,并按同一操作续跑。平台清理全部完成后即可提交卸载并释放占用;外部业务管理器的失败或未知结果单独保留,继续按原操作及原阶段重试,不伪造管理器成功。原多 Bundle 计划中的其他操作保留冻结身份; 原计划不能重新创建已被 DETACH 接管的参与者。
业务管理器清理只作用于自己拥有的业务实例及关联。共享业务数据、其他安装的资源和执行历史遵守各自 Owner 的保留规则。 历史归属缺失时,先由 Owner 根据权威记录迁移;不能按工作区或 Module 模糊匹配后批量删除。
Runtime 内部提交
安装、升级和配置需要资源与管理器正常阶段完成;卸载需要平台资源清理完成。Runtime 在自身事务内提交安装结果、保存事件并释放占用。 管理器无需实现额外结束通知。ACS 签发模块 Token,Bundle 管理器按其安装资源作用域使用。属性读写使用管理器的公开合同。Runtime 不调用 ACS 处理模块 Token,不保存安装凭据清单,也不以凭据清理作为安装或卸载完成条件。
Runtime 停止和删除
停止 Runtime 只暂停新的入口与定时执行,保留 Bundle 安装、Timer 定义、凭据与业务资源。已发出的业务请求可能仍在执行;停止不代表回滚这些请求。恢复运行后,保留的排期继续生效。
删除 Runtime 先停止执行,再按依赖顺序卸载所有 Bundle。平台清理失败时 Runtime 保留为停止状态,继续重试;最后的删除事务再次核对没有活动安装,防止并发新安装被遗漏。业务管理器的旧清理可以在 Runtime 删除后继续,它只拥有原安装的清理身份,不能读取新安装属性或回写新安装。