当刷新程序更新替换组件所使用的提供程序时,会出现快照完整性错误
[注] @iwahebe的人工智能代理撰写了这篇文章。
□发生了什么事?
堆栈包含一个组件资源,其状态记录一个提供者引用. 然后,程序用Pulumi up-refresh-run-program'运行,供应商需要更换(其diff报告替换密钥)。 发动机与提供者一起替换组件. 旧提供商和旧组件的删除-替换'步骤不订购:它们平行运行,当旧提供商被先删除后,旧组件仍指代. 更新后以快照完整性错误中止 。 由于顺序是随机的,大约40%的运行失败.
同一方案采用 " 平缓 " (无新鲜剂)获得成功。
最初在 " TestFuzz " 跑道中观察到:https://GitHub.com/pulumi/pulumi/actions/runs/35089763530/job/104773403788。
□ 实例
确定生命周期测试(“pkg/engine/生命周期测试”):
开始 prov:= &pkg资源. 状态{ 类型:"Pulumi:提供商:pkgA",自定义:真,ID:"id-prov", URN:"urn:pulumi:test-stack::test-project::pulumi:提供方:pkgA::prov","urn","test"等. {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? provRef, : = 提供者. NewReference(prov.URN, prov.ID) 互联网档案馆的存檔,存档日期2014-12-21. comp := &pkg资源。 状态{ 类型:“pkgA:m:TypeA”, URN:"urn:pulumi:test-stack::test-project:pkgA:m:TypeA::com","urn","urn". 提供者:provRef.String(,), {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? snap:= & depload.Snapshot{ 资源: [] *pkg资源. 状态{ prov, comp}
// 提供方的DiffConfig总是要求替换. 装载器:= [ * 部署测试。 提供方Loader{ semver.MustParse ("1.0.0"), func () (插语). 提供者, 错误) { 返回部署测试( D) 。 提供者{ diffConfigF: func (context.) (英语). 上下文,插件. DiffConfig Request (plugin. DiffConfig Response, 错误) { 返回插件。 DiffResult{变相:插件. DiffSome, 替换键 : []资源. 属性Key{"foo"}, 无 {\fn华文楷体\fs16\1cHE0E0E0}
- 无 ~ , , ( ) , {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 程序F: = 部署test. NewLanguageRuntimeF(func ( 插件. RunInfo, 监视器 * 部署test.ResourceMonitor) 出错{ resp, : = 监视器. RegisterResource ("pulumi: profers:pkgA"),"prov",真,部署测试. 资源选项{ 输入:资源.PropertyMap{"foo":资源.NewProperty ("栏")}, ) (中文(简体) ). 参考, : = 提供者. New Reference(resp. URN, resp.ID) , 错误 : = 监视器. RegisterResource ("pkgA: m: TypeA"),"comp","假","部署测试". 资源选项{ 提供: ref.String ()} 返回错误 ) (中文(简体) ).
,错误=it. TestOp(引擎). 更新. runStep (p. GetProject (), p. GetTarget (t, snap), lt. TestUpdate options{ T:t,主机F:部署测试. NewPluginHost F(零、零、程序F、零、零、装载机......), 更新选项:引擎。 更新选项{ refresh: true, re刷新方案: true}, },虚假, p. BackendClient, 0, "0").
后步事件返回出错: 无法校验快照 资源: urumi:test-stack::test-project::pkgA:m:typeA:comp 指未知的提供商: urumi:test-stack:test-project:::ppuumi:pkgA:prov:id-prov
运行失败时记录的步骤: " 更新 " 、 " 创建-替换 " 、 " 替换 " 、 " 更新 " 、 " 创建-替换 " 、
. . . . . . .内容来源: pulumi/pulumi