terraform-provider-cloudflare: terraform panic crashes since 2.18 upgrade

Terraform version

v0.13.2

Affected resource(s)

  • page rules

Terraform configuration files


resource "cloudflare_page_rule" "static-pages" {
  zone_id    = module.cloudflare_zone.zone_id
  priority   = 5
  status     = "active"
  target     = "*${local.zone_name}/static-pages/*"
  actions {
    cache_level    = "cache_everything"
    edge_cache_ttl = "300"
    cache_key_fields {
      cookie {
        include = ["locale"]
      }
      header {
        check_presence = ["x-hide-fields", "x-ignore-tags", "x-locale"]
      }
      host {}
      user {}
      query_string {}
    }
  }
}

Debug output

Panic output

2021/02/05 16:35:32 [TRACE] dag/walk: vertex "root" is waiting for "module.website_somewebsite (close)"
2021-02-05T16:35:32.709+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: 2021/02/05 16:35:32 [DEBUG] Cloudflare Page Rule read configuration: cloudflare.PageRule{ID:"some-rule-id", Targets:[]cloudflare.PageRuleTarget{cloudflare.PageRuleTarget{Target:"url", Constraint:struc
t { Operator string "json:\"operator\""; Value string "json:\"value\"" }{Operator:"matches", Value:"*somewebsite/static-pages/*"}}}, Actions:[]cloudflare.PageRuleAction{cloudflare.PageRuleAction{ID:"cache_level", Value:"cache_everything"}, cloudflare.PageRuleAction{ID:"edge_cache_ttl", Value:300}, cl
oudflare.PageRuleAction{ID:"cache_key_fields", Value:map[string]interface {}{"cookie":map[string]interface {}{"check_presence":[]interface {}{}, "include":[]interface {}{"locale"}}, "header":map[string]interface {}{"check_presence":[]interface {}{"x-hide-fields", "x-ignore-tags", "x-locale"}, "exclude"
:[]interface {}{}, "include":[]interface {}{}}, "host":map[string]interface {}{"resolved":false}, "query_string":map[string]interface {}{"exclude":[]interface {}{}, "include":"*"}, "user":map[string]interface {}{"device_type":false, "geo":false, "lang":false}}}}, Priority:5, Status:"active", ModifiedOn
:time.Time{wall:0x0, ext:63734805755, loc:(*time.Location)(nil)}, CreatedOn:time.Time{wall:0x0, ext:63711575298, loc:(*time.Location)(nil)}}
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: panic: Invalid data-type
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: goroutine 1443 [running]:
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: github.com/cloudflare/terraform-provider-cloudflare/cloudflare.itemExistsInSlice(0x1d224c0, 0xc0006b30a0, 0x1d224c0, 0x20bdb00, 0xc000662bc8)
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      github.com/cloudflare/terraform-provider-cloudflare/cloudflare/utils.go:91 +0x219
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: github.com/cloudflare/terraform-provider-cloudflare/cloudflare.transformFromCloudflarePageRuleAction(0xc0009ad868, 0xc0005e9530, 0xc0006836b0, 0xe, 0xc000662758, 0x0, 0x0)
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      github.com/cloudflare/terraform-provider-cloudflare/cloudflare/resource_cloudflare_page_rule.go:753 +0xc8a
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: github.com/cloudflare/terraform-provider-cloudflare/cloudflare.resourceCloudflarePageRuleRead(0xc00034b500, 0x1f2dc40, 0xc0006e4240, 0xc00034b500, 0x0)
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      github.com/cloudflare/terraform-provider-cloudflare/cloudflare/resource_cloudflare_page_rule.go:580 +0x805
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Resource).RefreshWithoutUpgrade(0xc0001b87e0, 0xc0002f3ea0, 0x1f2dc40, 0xc0006e4240, 0xc00028d778, 0x0, 0x0)
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      github.com/hashicorp/terraform-plugin-sdk@v1.16.0/helper/schema/resource.go:460 +0x129
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: github.com/hashicorp/terraform-plugin-sdk/internal/helper/plugin.(*GRPCProviderServer).ReadResource(0xc0001813d8, 0x21001e0, 0xc0007b83f0, 0xc000997ec0, 0xc0001813d8, 0xc0007b83f0, 0xc00001eba0)
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      github.com/hashicorp/terraform-plugin-sdk@v1.16.0/internal/helper/plugin/grpc_provider.go:525 +0x3dd
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: github.com/hashicorp/terraform-plugin-sdk/internal/tfplugin5._Provider_ReadResource_Handler(0x1eea540, 0xc0001813d8, 0x21001e0, 0xc0007b83f0, 0xc000997e60, 0x0, 0x21001e0, 0xc0007b83f0, 0xc00017b680, 0x43a)
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      github.com/hashicorp/terraform-plugin-sdk@v1.16.0/internal/tfplugin5/tfplugin5.pb.go:3269 +0x214
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: google.golang.org/grpc.(*Server).processUnaryRPC(0xc0007cc1c0, 0x210bc00, 0xc000103680, 0xc00092c900, 0xc00039ab70, 0x27f7710, 0x0, 0x0, 0x0)
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      google.golang.org/grpc@v1.30.0/server.go:1171 +0x522
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: google.golang.org/grpc.(*Server).handleStream(0xc0007cc1c0, 0x210bc00, 0xc000103680, 0xc00092c900, 0x0)
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      google.golang.org/grpc@v1.30.0/server.go:1494 +0xcc5
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: google.golang.org/grpc.(*Server).serveStreams.func1.2(0xc00003c200, 0xc0007cc1c0, 0x210bc00, 0xc000103680, 0xc00092c900)
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      google.golang.org/grpc@v1.30.0/server.go:834 +0xa5
2021-02-05T16:35:32.712+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: created by google.golang.org/grpc.(*Server).serveStreams.func1
2021-02-05T16:35:32.713+0100 [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0:      google.golang.org/grpc@v1.30.0/server.go:832 +0x1fd
2021-02-05T16:35:32.718+0100 [WARN]  plugin.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = transport is closing"
2021-02-05T16:35:32.718+0100 [DEBUG] plugin: plugin process exited: path=.terraform/plugins/registry.terraform.io/cloudflare/cloudflare/2.18.0/darwin_amd64/terraform-provider-cloudflare_v2.18.0 pid=25888 error="exit status 2"
2021/02/05 16:35:32 [ERROR] eval: *terraform.EvalRefresh, err: rpc error: code = Unavailable desc = transport is closing
2021/02/05 16:35:32 [ERROR] eval: *terraform.EvalSequence, err: rpc error: code = Unavailable desc = transport is closing

Expected behavior

Terraform evaluates the page rule successfully.

Actual behavior

terraform crashes with following error:

panic: Invalid data-type
2021-02-05T15:20:51.795Z [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: 
2021-02-05T15:20:51.795Z [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: goroutine 1405 [running]:
2021-02-05T15:20:51.795Z [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: github.com/cloudflare/terraform-provider-cloudflare/cloudflare.itemExistsInSlice(0x1124940, 0xc000343250, 0x1124940, 0x14bf0c0, 0xc00087cbc8)
2021-02-05T15:20:51.795Z [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: 	github.com/cloudflare/terraform-provider-cloudflare/cloudflare/utils.go:91 +0x219
2021-02-05T15:20:51.795Z [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: github.com/cloudflare/terraform-provider-cloudflare/cloudflare.transformFromCloudflarePageRuleAction(0xc0001f7868, 0xc0007da330, 0xc000038370, 0xe, 0xc00087c758, 0x0, 0x0)
2021-02-05T15:20:51.795Z [DEBUG] plugin.terraform-provider-cloudflare_v2.18.0: 	github.com/cloudflare/terraform-provider-cloudflare/cloudflare/resource_cloudflare_page_rule.go:753 +0xc8a

Steps to reproduce

Important factoids

References

Community note

  • Please vote on this issue by adding a šŸ‘ reaction to the original issue to help the community and maintainers prioritize this request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 14
  • Comments: 18

Most upvoted comments

Update on the original issue:

  • I pinned to cloudflare 2.17 and destroyed all my groups
  • had to terraform state rm the few remaining groups that cloudflare can’t delete as they are in use
  • removed the pinned version
  • re-applied all the groups with 2.18: I’m now getting some variants as the errors above, ie: ā€œtransport is closingā€

=> going back to version 2.17

@Funghorn can you please open a new issue and follow the issue template provided? I don’t have enough information based on your comment.

Thanks @jgournet, that is the šŸ’” we needed. It looks like your issue is separate to this one (op is page rule cache key fields and yours is access SAML groups). I’m going to slice yours off into it’s own new issue where we can get a reproduction test case and a fix together.

for what it’s worth (=not much, sorry), I’m having the same issue when planning through terragrunt and with terraform v0.14.4 cloudflare v2.18.0 gets me a panic error cloudflare v2.17.0 works fine

However, I just cannot reproduce the issue in a standalone file …