{"record":{"id":"4eb0a4ac76fb2839","repo":"hashicorp/terraform","slug":"resp-error-4eb0a4","errorCode":null,"errorMessage":"${resp.Error}","messagePattern":"\\$\\{resp\\.Error\\}","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/plugin6/grpc_provider.go","lineNumber":540,"sourceCode":"\tprotoResp, err := p.client.ConfigureProvider(p.ctx, protoReq)\n\tif err != nil {\n\t\tresp.Diagnostics = resp.Diagnostics.Append(grpcErr(err))\n\t\treturn resp\n\t}\n\tresp.Diagnostics = resp.Diagnostics.Append(convert.ProtoToDiagnostics(protoResp.Diagnostics))\n\treturn resp\n}\n\nfunc (p *GRPCProvider) Stop() error {\n\tlogger.Trace(\"GRPCProvider.v6: Stop\")\n\n\tresp, err := p.client.StopProvider(p.ctx, new(proto6.StopProvider_Request))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif resp.Error != \"\" {\n\t\treturn errors.New(resp.Error)\n\t}\n\treturn nil\n}\n\nfunc (p *GRPCProvider) ReadResource(r providers.ReadResourceRequest) (resp providers.ReadResourceResponse) {\n\tlogger.Trace(\"GRPCProvider.v6: ReadResource\")\n\n\tschema := p.GetProviderSchema()\n\tif schema.Diagnostics.HasErrors() {\n\t\tresp.Diagnostics = schema.Diagnostics\n\t\treturn resp\n\t}\n\n\tresSchema, ok := schema.ResourceTypes[r.TypeName]\n\tif !ok {\n\t\tresp.Diagnostics = resp.Diagnostics.Append(fmt.Errorf(\"unknown resource type %s\", r.TypeName))\n\t\treturn resp\n\t}","sourceCodeStart":522,"sourceCodeEnd":558,"githubUrl":"https://github.com/hashicorp/terraform/blob/d32a084675427f5ac3f7d2868578ef8b2c1dc525/internal/plugin6/grpc_provider.go#L522-L558","documentation":"Thrown by GRPCProvider.Stop() (plugin v6) when the StopProvider RPC returned no transport error but set a non-empty `Error` string. v6 renames the RPC to StopProvider but the behavior matches v5: the provider reports it could not cleanly shut down during `terraform destroy`/interrupt, and the raw string is wrapped in errors.New.","triggerScenarios":"Running destroy or interrupting an apply that triggers the v6 provider's StopProvider, and the provider reports a stop failure.","commonSituations":"A v6 provider supervising external processes failing graceful shutdown. Interrupting a destroy midway.","solutions":["Allow external processes to exit, then re-run the operation.","Upgrade the v6 provider — stop-handling fixes ship in point releases.","Inspect the provider-reported message (passed through verbatim) to identify the affected resource."],"exampleFix":"# before\n$ terraform destroy   # interrupted -> v6 provider stop error\n\n# after\n$ terraform destroy   # after cleanup","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"# Go caller: treat v6 StopProvider errors as best-effort\nif err := provider.Stop(); err != nil {\n    log.Printf(\"warn: v6 provider stop: %v\", err)\n}","preventionTips":["Treat StopProvider errors as non-fatal during teardown.","Avoid interrupting destroys mid-flight.","Keep the v6 provider current."],"tags":["terraform","provider","grpc","plugin-v6","shutdown"],"backgroundTag":null,"analyzedSha":"d32a084675427f5ac3f7d2868578ef8b2c1dc525","analyzedAt":"2026-08-11T18:43:52.779Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}