hashicorp / terraform-provider-google

Terraform Provider for Google Cloud Platform
https://registry.terraform.io/providers/hashicorp/google/latest/docs
Mozilla Public License 2.0
2.29k stars 1.72k forks source link

Evaluate switching off of the GRPC bigtable client library #14566

Open melinath opened 1 year ago

melinath commented 1 year ago

Community Note

Affected Resource(s)

Issue Description

Bigtable resources are currently backed by a highly opinionated go client library which is unique to these resources. This adds additional risk of issues like https://github.com/hashicorp/terraform-provider-google/issues/14424, https://github.com/hashicorp/terraform-provider-google/issues/14440, https://github.com/hashicorp/terraform-provider-google/issues/12159, and https://github.com/hashicorp/terraform-provider-google/issues/14565 due to the unique use of GRPC and the customized behavior around certain types of error handling.

We should evaluate whether it would make sense to switch to use the REST API (which is standard for new resources) or use a standard generated API client library that is less opinionated.

Switching to another way of communicating with the API could be tricky - we'd need to maintain backwards-compatibility. However, if not switching, it could be worth auditing for other potential undiscovered problems.

References

SarahFrench commented 3 months ago

As a data point on this, this is a feature that seems blocked because the BigTable resources are implemented with the client library and not generated by MMV1: https://github.com/hashicorp/terraform-provider-google/issues/12191#issuecomment-2129827034

SarahFrench commented 2 weeks ago

We've received a customer issue where they have trouble provisioning google_bigtable_instance resources, with a "error reading server preface: http2: frame too large" error being surfaced from networking libraries in Go. It looks like it's a problem with the environment that the customer is using Terraform in (i.e. something to do with their network) but the fact BigTable resources use gRPC adds some extra layers on top of helping resolve the issue (if it isn't a part of causing the issue in the first place).

FYI @BBBmau