Snowflake-Labs / terraform-provider-snowflake

Terraform provider for managing Snowflake accounts
https://registry.terraform.io/providers/Snowflake-Labs/snowflake/latest
MIT License
538 stars 416 forks source link

Network policy and attachment - Terraform crash #300

Closed funes79 closed 5 months ago

funes79 commented 3 years ago

Provider Version

0.18.1 and 0.17.1

Terraform Version

0.13.4

Describe the bug

A clear and concise description of what the bug is.

Error: rpc error: code = Unavailable desc = transport is closing

panic: runtime error: invalid memory address or nil pointer dereference
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0xe93700]
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: goroutine 16 [running]:
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/chanzuckerberg/terraform-provider-snowflake/pkg/resources.ReadNetworkPolicy(0xc0001a2620, 0x11b7020, 0xc0005d0820, 0x0, 0x0)
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/code/terraform-provider-snowflake/pkg/resources/network_policy.go:119 +0x2c0
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/chanzuckerberg/terraform-provider-snowflake/pkg/resources.CreateNetworkPolicy(0xc0001a2620, 0x11b7020, 0xc0005d0820, 0x2, 0x1a8d200)
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/code/terraform-provider-snowflake/pkg/resources/network_policy.go:83 +0x3df
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Resource).Apply(0xc00032c990, 0xc00010c460, 0xc000363800, 0x11b7020, 0xc0005d0820, 0x105b201, 0xc000615d68, 0xc000643620)
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk@v1.12.0/helper/schema/resource.go:310 +0x375
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Provider).Apply(0xc0000f0180, 0xc000851a10, 0xc00010c460, 0xc000363800, 0xc000632f28, 0xc0000ad168, 0x105d260)
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk@v1.12.0/helper/schema/provider.go:294 +0x99
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/hashicorp/terraform-plugin-sdk/internal/helper/plugin.(*GRPCProviderServer).ApplyResourceChange(0xc0000acc98, 0x13d8a40, 0xc000642ba0, 0xc0001a2000, 0xc0000acc98, 0xc000642ba0, 0xc00064db78)
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk@v1.12.0/internal/helper/plugin/grpc_provider.go:885 +0x8ab
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/hashicorp/terraform-plugin-sdk/internal/tfplugin5._Provider_ApplyResourceChange_Handler(0x11835e0, 0xc0000acc98, 0x13d8a40, 0xc000642ba0, 0xc000611d40, 0x0, 0x13d8a40, 0xc000642ba0, 0xc00064e0f0, 0xe1)
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk@v1.12.0/internal/tfplugin5/tfplugin5.pb.go:3305 +0x214
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: google.golang.org/grpc.(*Server).processUnaryRPC(0xc0000b0c00, 0x13e3de0, 0xc0000b1980, 0xc0008aaf00, 0xc0006d0ab0, 0x1a4afc0, 0x0, 0x0, 0x0)
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/google.golang.org/grpc@v1.27.1/server.go:1024 +0x522
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: google.golang.org/grpc.(*Server).handleStream(0xc0000b0c00, 0x13e3de0, 0xc0000b1980, 0xc0008aaf00, 0x0)
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/google.golang.org/grpc@v1.27.1/server.go:1313 +0xd34
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc00032e1a0, 0xc0000b0c00, 0x13e3de0, 0xc0000b1980, 0xc0008aaf00)
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/google.golang.org/grpc@v1.27.1/server.go:722 +0xa5
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: created by google.golang.org/grpc.(*Server).serveStreams.func1
2020-11-10T16:27:07.051+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/google.golang.org/grpc@v1.27.1/server.go:720 +0xa5
2020-11-10T16:27:07.053+0100 [DEBUG] plugin: plugin process exited: path=.terraform/plugins/registry.terraform.io/chanzuckerberg/snowflake/0.18.1/linux_amd64/terraform-provider-snowflake_v0.18.1 pid=20654 error="exit status 2"
2020/11/10 16:27:07 [DEBUG] snowflake_network_policy.test: apply errored, but we're indicating that via the Error pointer rather than returning it: rpc error: code = Unavailable desc = transport is closing
2020/11/10 16:27:07 [TRACE] eval: *terraform.EvalMaybeTainted
2020/11/10 16:27:07 [TRACE] EvalMaybeTainted: snowflake_network_policy.test encountered an error during creation, so it is now marked as tainted
2020/11/10 16:27:07 [TRACE] eval: *terraform.EvalWriteState
2020/11/10 16:27:07 [TRACE] EvalWriteState: removing state object for snowflake_network_policy.test
2020/11/10 16:27:07 [TRACE] eval: *terraform.EvalApplyProvisioners
2020/11/10 16:27:07 [TRACE] EvalApplyProvisioners: snowflake_network_policy.test has no state, so skipping provisioners
2020/11/10 16:27:07 [TRACE] eval: *terraform.EvalMaybeTainted
2020/11/10 16:27:07 [TRACE] EvalMaybeTainted: snowflake_network_policy.test encountered an error during creation, so it is now marked as tainted
2020/11/10 16:27:07 [TRACE] eval: *terraform.EvalWriteState
2020/11/10 16:27:07 [TRACE] EvalWriteState: removing state object for snowflake_network_policy.test
2020/11/10 16:27:07 [TRACE] eval: *terraform.EvalIf
2020/11/10 16:27:07 [TRACE] eval: *terraform.EvalIf
2020/11/10 16:27:07 [TRACE] eval: *terraform.EvalWriteDiff
2020/11/10 16:27:07 [TRACE] eval: *terraform.EvalApplyPost
2020/11/10 16:27:07 [ERROR] eval: *terraform.EvalApplyPost, err: rpc error: code = Unavailable desc = transport is closing
2020/11/10 16:27:07 [ERROR] eval: *terraform.EvalSequence, err: rpc error: code = Unavailable desc = transport is closing
2020/11/10 16:27:07 [TRACE] [walkApply] Exiting eval tree: snowflake_network_policy.test
2020/11/10 16:27:07 [TRACE] vertex "snowflake_network_policy.test": visit complete
2020/11/10 16:27:07 [TRACE] dag/walk: upstream of "snowflake_network_policy_attachment.test" errored, so skipping
2020/11/10 16:27:07 [TRACE] dag/walk: upstream of "provider[\"registry.terraform.io/chanzuckerberg/snowflake\"].security (close)" errored, so skipping
2020/11/10 16:27:07 [TRACE] dag/walk: upstream of "meta.count-boundary (EachMode fixup)" errored, so skipping
2020/11/10 16:27:07 [TRACE] dag/walk: upstream of "root" errored, so skipping
2020-11-10T16:27:07.073+0100 [DEBUG] plugin: plugin exited

!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

Terraform crashed! This is always indicative of a bug within Terraform.
A crash log has been placed at "crash.log" relative to your current
working directory. It would be immensely helpful if you could please
report the crash with Terraform[1] so that we can fix this.

When reporting bugs, please include your terraform version. That
information is available on the first line of crash.log. You can also
get it by running 'terraform --version' on the command line.

SECURITY WARNING: the "crash.log" file that was created may contain
sensitive information that must be redacted before it is safe to share
on the issue tracker.

[1]: https://github.com/hashicorp/terraform/issues

!!!!!!!!!!!!!!!!!!!!!!!!!!! TERRAFORM CRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!

Expected behavior

Code samples and commands

Additional context

I just used a simple setup (copied from network policy attachment acceptance test) and it fails with 0.18 and 0.17.

ryanking commented 3 years ago

@funes79 can you still replicate this problem? I think I know what is going on, but can't replicate the problem.

funes79 commented 3 years ago

Yes it can be easily reproduced using this simple configuration:

network_policy.tf

resource "snowflake_network_policy" "test" {
        name            = "aws_access"
        allowed_ip_list = ["34.249.212.0/24"]
        provider          = snowflake.security
}

resource "snowflake_network_policy_attachment" "test" {
        network_policy_name = snowflake_network_policy.test.name
        set_for_account     = false
        users               = ["DEV_USER"]
        provider          = snowflake.security
}

sf.tf

provider "snowflake" {
  account = var.account
  region  = "eu-west-1"
  role    = "SECURITYADMIN"
  alias   = "security"
}

aws.tf

terraform {
  backend "s3" {
    bucket = var.tfstates_repo_s3_bucket
    region = "eu-west-1"
  }

  required_providers {
    snowflake = {
      source  = "chanzuckerberg/snowflake"
      version = "0.18.1"
    }
  }
}

Errror log:

panic: runtime error: invalid memory address or nil pointer dereference
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0xe93700]
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: goroutine 15 [running]:
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/chanzuckerberg/terraform-provider-snowflake/pkg/resources.ReadNetworkPolicy(0xc000222770, 0x11b7020, 0xc00043fa00, 0x0, 0x0)
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/code/terraform-provider-snowflake/pkg/resources/network_policy.go:119 +0x2c0
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/chanzuckerberg/terraform-provider-snowflake/pkg/resources.CreateNetworkPolicy(0xc000222770, 0x11b7020, 0xc00043fa00, 0x2, 0x1a8d200)
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/code/terraform-provider-snowflake/pkg/resources/network_policy.go:83 +0x3df
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Resource).Apply(0xc00045ba70, 0xc0005e6140, 0xc00030ed40, 0x11b7020, 0xc00043fa00, 0x105b201, 0xc0007669e8, 0xc00076b380)
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk@v1.12.0/helper/schema/resource.go:310 +0x375
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Provider).Apply(0xc0000d0300, 0xc000803a10, 0xc0005e6140, 0xc00030ed40, 0xc00076e988, 0xc0000e8ad8, 0x105d260)
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk@v1.12.0/helper/schema/provider.go:294 +0x99
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/hashicorp/terraform-plugin-sdk/internal/helper/plugin.(*GRPCProviderServer).ApplyResourceChange(0xc0000e8670, 0x13d8a40, 0xc00076a900, 0xc000222000, 0xc0000e8670, 0xc00076a900, 0xc00074ab78)
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk@v1.12.0/internal/helper/plugin/grpc_provider.go:885 +0x8ab
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: github.com/hashicorp/terraform-plugin-sdk/internal/tfplugin5._Provider_ApplyResourceChange_Handler(0x11835e0, 0xc0000e8670, 0x13d8a40, 0xc00076a900, 0xc0006a9740, 0x0, 0x13d8a40, 0xc00076a900, 0xc00079a0f0, 0xe1)
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk@v1.12.0/internal/tfplugin5/tfplugin5.pb.go:3305 +0x214
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: google.golang.org/grpc.(*Server).processUnaryRPC(0xc0004f8900, 0x13e3de0, 0xc0004f9800, 0xc00087cc00, 0xc000303320, 0x1a4afc0, 0x0, 0x0, 0x0)
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/google.golang.org/grpc@v1.27.1/server.go:1024 +0x522
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: google.golang.org/grpc.(*Server).handleStream(0xc0004f8900, 0x13e3de0, 0xc0004f9800, 0xc00087cc00, 0x0)
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/google.golang.org/grpc@v1.27.1/server.go:1313 +0xd34
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc0004ee160, 0xc0004f8900, 0x13e3de0, 0xc0004f9800, 0xc00087cc00)
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/google.golang.org/grpc@v1.27.1/server.go:722 +0xa5
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1: created by google.golang.org/grpc.(*Server).serveStreams.func1
2020-12-15T08:49:43.738+0100 [DEBUG] plugin.terraform-provider-snowflake_v0.18.1:       /Users/rking/go/pkg/mod/google.golang.org/grpc@v1.27.1/server.go:720 +0xa5
sfc-gh-asawicki commented 5 months ago

We are closing this issue as part of a cleanup described in announcement. If you believe that the issue is still valid in v0.89.0, please open a new ticket.