hashicorp / terraform

Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
https://www.terraform.io
Other
42.78k stars 9.56k forks source link

Expanding function arguments for "cidrsubnets" does not work with "locals". #24910

Closed mkielar closed 4 years ago

mkielar commented 4 years ago

Terraform Version

→ terraform -v
Terraform v0.12.24

Terraform Configuration Files

variable "azs" { 
  type    = list(string) 
  default = ["a", "b", "c"]
}

variable "vpc_cidr" {
  type    = "string"
  default = "10.0.0.0/16"
}

locals {

  private_newbits  = [for x in var.azs: 2]
  database_newbits = [for x in var.azs: 4]
  pub_newbits      = [for x in var.azs: 8]

  newbits = concat(local.private_newbits, local.database_newbits, local.pub_newbits)

  subnets = cidrsubnets(var.vpc_cidr, local.newbits...)

}

Debug Output


→ TF_LOG=trace terraform validate
2020/05/09 21:29:38 [INFO] Terraform version: 0.12.24
2020/05/09 21:29:38 [INFO] Go runtime version: go1.12.13
2020/05/09 21:29:38 [INFO] CLI args: []string{"/c/tools/wsl/home/mkielar/.tfenv/versions/0.12.24/terraform", "validate"}
2020/05/09 21:29:38 [DEBUG] Attempting to open CLI config file: /c/tools/wsl/home/mkielar/.terraformrc
2020/05/09 21:29:38 [DEBUG] File doesn't exist, but doesn't need to. Ignoring.
2020/05/09 21:29:38 [INFO] CLI command args: []string{"validate"}
2020/05/09 21:29:38 [DEBUG] checking for provider in "."
2020/05/09 21:29:38 [DEBUG] checking for provider in "/c/tools/wsl/home/mkielar/.tfenv/versions/0.12.24"
2020/05/09 21:29:38 [DEBUG] checking for provisioner in "."
2020/05/09 21:29:38 [DEBUG] checking for provisioner in "/c/tools/wsl/home/mkielar/.tfenv/versions/0.12.24"
2020/05/09 21:29:38 [INFO] Failed to read plugin lock file .terraform/plugins/linux_amd64/lock.json: open .terraform/plugins/linux_amd64/lock.json: no such file or directory
2020/05/09 21:29:38 [TRACE] terraform.NewContext: starting
2020/05/09 21:29:38 [TRACE] terraform.NewContext: resolving provider version selections
2020/05/09 21:29:38 [TRACE] terraform.NewContext: loading provider schemas
2020/05/09 21:29:38 [TRACE] terraform.NewContext: complete
2020/05/09 21:29:38 [INFO] terraform: building graph: GraphTypeValidate
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.ConfigTransformer
2020/05/09 21:29:38 [TRACE] ConfigTransformer: Starting for path:
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.ConfigTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.LocalTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.LocalTransformer with new graph:
  local.database_newbits - *terraform.NodeLocal
  local.newbits - *terraform.NodeLocal
  local.private_newbits - *terraform.NodeLocal
  local.pub_newbits - *terraform.NodeLocal
  local.subnets - *terraform.NodeLocal
  ------
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.OutputTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.OutputTransformer (no changes)

2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.OrphanResourceInstanceTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.OrphanResourceInstanceTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.StateTransformer
2020/05/09 21:29:38 [TRACE] StateTransformer: state is empty, so nothing to do
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.StateTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.OrphanOutputTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.OrphanOutputTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.AttachResourceConfigTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.AttachResourceConfigTransformer (no changes)
Warning: Quoted type constraints are deprecated
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.AttachStateTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.AttachStateTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.RootVariableTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.RootVariableTransformer with new graph:
  local.database_newbits - *terraform.NodeLocal
  local.newbits - *terraform.NodeLocal
  local.private_newbits - *terraform.NodeLocal
  local.pub_newbits - *terraform.NodeLocal
  local.subnets - *terraform.NodeLocal
  var.azs - *terraform.NodeRootVariable
  var.vpc_cidr - *terraform.NodeRootVariable
  ------
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.MissingProvisionerTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.MissingProvisionerTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.ProvisionerTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.ProvisionerTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.ModuleVariableTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.ModuleVariableTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.graphTransformerMulti
2020/05/09 21:29:38 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.ProviderConfigTransformer
2020/05/09 21:29:38 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.ProviderConfigTransformer with new graph:
  local.database_newbits - *terraform.NodeLocal
  local.newbits - *terraform.NodeLocal
  local.private_newbits - *terraform.NodeLocal
  local.pub_newbits - *terraform.NodeLocal
  local.subnets - *terraform.NodeLocal
  var.azs - *terraform.NodeRootVariable
  var.vpc_cidr - *terraform.NodeRootVariable
  ------
2020/05/09 21:29:38 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.MissingProviderTransformer
2020/05/0
9 21:29:38 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.MissingProviderTransformer (no changes)
2020/05/09 21:29:38 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.ProviderTransformer
2020/05/09 21:29:38 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.ProviderTransformer (no changes)
2020/05/09 21:29:38 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.PruneProviderTransformer
2020/05/09 21:29:38 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.PruneProviderTransformer (no changes)
2020/05/09 21:29:38 [TRACE] (graphTransformerMulti) Executing graph transform *terraform.ParentProviderTransformer
2020/05/09 21:29:38 [TRACE] (graphTransformerMulti) Completed graph transform *terraform.ParentProviderTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.graphTransformerMulti (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.RemovedModuleTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.RemovedModuleTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.AttachSchemaTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.AttachSchemaTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.ReferenceTransformer
2020/05/09 21:29:38 [DEBUG] ReferenceTransformer: "local.database_newbits" references: [var.azs]
2020/05/09 21:29:38 [DEBUG] ReferenceTransformer: "var.azs" references: []
2020/05/09 21:29:38 [DEBUG] ReferenceTransformer: "var.vpc_cidr" references: []
2020/05/09 21:29:38 [DEBUG] ReferenceTransformer: "local.pub_newbits" references: [var.azs]
2020/05/09 21:29:38 [DEBUG] ReferenceTransformer: "local.newbits" references: [local.private_newbits local.database_newbits local.pub_newbits]
2020/05/09 21:29:38 [DEBUG] ReferenceTransformer: "local.subnets" references: [var.vpc_cidr local.newbits]
2020/05/09 21:29:38 [DEBUG] ReferenceTransformer:  on locals.tf line 7, in variable "vpc_cidr":
 "local.private_newbits" references: [var.azs]
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.ReferenceTransformer with new graph:
  local.database_newbits - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
  local.newbits - *terraform.NodeLocal
    local.database_newbits - *terraform.NodeLocal
    local.private_newbits - *terraform.NodeLocal
    local.pub_newbits - *terraform.NodeLocal
  local.private_newbits - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
  local.pub_newbits - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
  local.subnets - *terraform.NodeLocal
    local.newbits - *terraform.NodeLocal
    var.vpc_cidr - *terraform.NodeRootVariable
  var.azs - *terraform.NodeRootVariable
  var.vpc_cidr - *terraform.NodeRootVariable
  ------
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.CountBoundaryTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.CountBoundaryTransformer with new graph:
  local.database_newbits - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
  local.newbits - *terraform.NodeLocal
    local.database_newbits - *terraform.NodeLocal
    local.private_newbits - *terraform.NodeLocal
    local.pub_newbits - *terraform.NodeLocal
  local.private_newbits - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
  local.pub_newbits - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
  local.subnets - *terraform.NodeLocal
    local.newbits - *terraform.NodeLocal
    var.vpc_cidr - *terraform.NodeRootVariable
  meta.count-boundary (EachMode fixup) - *terraform.NodeCountBoundary
    local.database_newbits - *terraform.NodeLocal
    local.newbits - *terraform.NodeLocal
    local.private_newbits - *terraform.NodeLocal
    local.pub_newbits - *terraform.NodeLocal
    local.subnets - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
    var.vpc_cidr - *terraform.NodeRootVariable
  var.azs - *terraform.NodeRootVariable
  var.vpc_cidr - *terraform.NodeRoot   7:   type    = "string"
Variable
  ------
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.TargetsTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.TargetsTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.ForcedCBDTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.ForcedCBDTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.CloseProviderTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.CloseProviderTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.CloseProvisionerTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.CloseProvisionerTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.RootTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.RootTransformer (no changes)
2020/05/09 21:29:38 [TRACE] Executing graph transform *terraform.TransitiveReductionTransformer
2020/05/09 21:29:38 [TRACE] Completed graph transform *terraform.TransitiveReductionTransformer with new graph:
  local.database_newbits - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
  local.newbits - *terraform.NodeLocal
    local.database_newbits - *terraform.NodeLocal
    local.private_newbits - *terraform.NodeLocal
    local.pub_newbits - *terraform.NodeLocal
  local.private_newbits - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
  local.pub_newbits - *terraform.NodeLocal
    var.azs - *terraform.NodeRootVariable
  local.subnets - *terraform.NodeLocal
    local.newbits - *terraform.NodeLocal
    var.vpc_cidr - *terraform.NodeRootVariable
  meta.count-boundary (EachMode fixup) - *terraform.NodeCountBoundary
    local.subnets - *terraform.NodeLocal
  var.azs - *terraform.NodeRootVariable
  var.vpc_cidr - *terraform.NodeRootVariable
  ------
2020/05/09 21:29:38 [DEBUG] Starting graph walk: walkValidate
2020/05/09 21:29:38 [TRACE] dag/walk: updating g
raph
2020/05/09 21:29:38 [TRACE] dag/walk: added new vertex: "local.newbits"
2020/05/09 21:29:38 [TRACE] dag/walk: added new vertex: "local.subnets"
2020/05/09 21:29:38 [TRACE] dag/walk: added new vertex: "local.private_newbits"
2020/05/09 21:29:38 [TRACE] dag/walk: added new vertex: "local.database_newbits"
2020/05/09 21:29:38 [TRACE] dag/walk: added new vertex: "var.azs"
2020/05/09 21:29:38 [TRACE] dag/walk: added new vertex: "var.vpc_cidr"
2020/05/09 21:29:38 [TRACE] dag/walk: added new vertex: "meta.count-boundary (EachMode fixup)"
2020/05/09 21:29:38 [TRACE] dag/walk: added new vertex: "local.pub_newbits"
2020/05/09 21:29:38 [TRACE] dag/walk: added edge: "local.newbits" waiting on "local.pub_newbits"
2020/05/09 21:29:38 [TRACE] dag/walk: added edge: "meta.count-boundary (EachMode fixup)" waiting on "local.subnets"
2020/05/09 21:29:38 [TRACE] dag/walk: added edge: "local.newbits" waiting on "local.database_newbits"
2020/05/09 21:29:38 [TRACE] dag/walk: added edge: "local.subnets" waiting on "local.newbits"
2020/05/09 21:29:38 [TRACE] dag/walk: added edge: "local.newbits" waiting on "local.private_newbits"
2020/05/09 21:29:38 [TRACE] dag/walk: added edge: "local.subnets" waiting on "var.vpc_cidr"
2020/05/09 21:29:38 [TRACE] dag/walk: added edge: "local.private_newbits" waiting on "var.azs"
2020/05/09 21:29:38 [TRACE] dag/walk: added edge: "local.database_newbits" waiting on "var.azs"
2020/05/09 21:29:38 [TRACE] dag/walk: added edge: "local.pub_newbits" waiting on "var.azs"
2020/05/09 21:29:38 [TRACE] dag/walk: dependencies changed for "local.database_newbits", sending new deps
2020/05/09 21:29:38 [TRACE] dag/walk: dependencies changed for "local.pub_newbits", sending new deps
2020/05/09 21:29:38 [TRACE] dag/walk: dependencies changed for "local.newbits", sending new deps
2020/05/09 21:29:38 [TRACE] dag/walk: dependencies changed for "meta.count-boundary (EachMode fixup)", sending new deps
2020/05/09 21:29:38 [TRACE] dag/walk: dependencies changed for "local.subnets", sending new deps
2020/05/09 21:29:38 [TRACETerraform 0.11 and earlier required type constraints to be given in quotes,
] dag/walk: dependencies changed for "local.private_newbits", sending new deps
2020/05/09 21:29:38 [TRACE] dag/walk: visiting "var.azs"
2020/05/09 21:29:38 [TRACE] vertex "var.azs": starting visit (*terraform.NodeRootVariable)
2020/05/09 21:29:38 [TRACE] vertex "var.azs": evaluating
2020/05/09 21:29:38 [TRACE] [walkValidate] Entering eval tree: var.azs
2020/05/09 21:29:38 [TRACE] <root>: eval: *terraform.EvalSequence
2020/05/09 21:29:38 [TRACE] [walkValidate] Exiting eval tree: var.azs
2020/05/09 21:29:38 [TRACE] vertex "var.azs": visit complete
2020/05/09 21:29:38 [TRACE] dag/walk: visiting "local.database_newbits"
2020/05/09 21:29:38 [TRACE] vertex "local.database_newbits": starting visit (*terraform.NodeLocal)
2020/05/09 21:29:38 [TRACE] vertex "local.database_newbits": evaluating
2020/05/09 21:29:38 [TRACE] [walkValidate] Entering eval tree: local.database_newbits
2020/05/09 21:29:38 [TRACE] <root>: eval: *terraform.EvalLocal
2020/05/09 21:29:38 [TRACE] dag/walk: visiting "local.private_newbits"
2020/05/09 21:29:38 [TRACE] [walkValidate] Exiting eval tree: local.database_newbits
2020/05/09 21:29:38 [TRACE] vertex "local.database_newbits": visit complete
2020/05/09 21:29:38 [TRACE] vertex "local.private_newbits": starting visit (*terraform.NodeLocal)
2020/05/09 21:29:38 [TRACE] vertex "local.private_newbits": evaluating
2020/05/09 21:29:38 [TRACE] [walkValidate] Entering eval tree: local.private_newbits
2020/05/09 21:29:38 [TRACE] <root>: eval: *terraform.EvalLocal
2020/05/09 21:29:38 [TRACE] [walkValidate] Exiting eval tree: local.private_newbits
2020/05/09 21:29:38 [TRACE] vertex "local.private_newbits": visit complete
2020/05/09 21:29:38 [TRACE] dag/walk: visiting "var.vpc_cidr"
2020/05/09 21:29:38 [TRACE] vertex "var.vpc_cidr": starting visit (*terraform.NodeRootVariable)
2020/05/09 21:29:38 [TRACE] vertex "var.vpc_cidr": evaluating
2020/05/09 21:29:38 [TRACE] [walkValidate] Entering eval tree: var.vpc_cidr
2020/05/09 21:29:38 [TRACE] <root>: eval: *terraform.EvalSequence
2020/05/09 21:29:38 [TRACE] [walkVbut that form is now deprecated and will be removed in a future version of
Terraform. To silence this warning, remove the quotes around "string".
alidate] Exiting eval tree: var.vpc_cidr
2020/05/09 21:29:38 [TRACE] vertex "var.vpc_cidr": visit complete
2020/05/09 21:29:38 [TRACE] dag/walk: visiting "local.pub_newbits"
2020/05/09 21:29:38 [TRACE] vertex "local.pub_newbits": starting visit (*terraform.NodeLocal)
2020/05/09 21:29:38 [TRACE] vertex "local.pub_newbits": evaluating
2020/05/09 21:29:38 [TRACE] [walkValidate] Entering eval tree: local.pub_newbits
2020/05/09 21:29:38 [TRACE] <root>: eval: *terraform.EvalLocal
2020/05/09 21:29:38 [TRACE] [walkValidate] Exiting eval tree: local.pub_newbits
2020/05/09 21:29:38 [TRACE] vertex "local.pub_newbits": visit complete
2020/05/09 21:29:38 [TRACE] dag/walk: visiting "local.newbits"
2020/05/09 21:29:38 [TRACE] vertex "local.newbits": starting visit (*terraform.NodeLocal)
2020/05/09 21:29:38 [TRACE] vertex "local.newbits": evaluating
2020/05/09 21:29:38 [TRACE] [walkValidate] Entering eval tree: local.newbits
2020/05/09 21:29:38 [TRACE] <root>: eval: *terraform.EvalLocal
2020/05/09 21:29:38 [TRACE] [walkValidate] Exiting eval tree: local.newbits
2020/05/09 21:29:38 [TRACE] vertex "local.newbits": visit complete
2020/05/09 21:29:38 [TRACE] dag/walk: visiting "local.subnets"
2020/05/09 21:29:38 [TRACE] vertex "local.subnets": starting visit (*terraform.NodeLocal)
2020/05/09 21:29:38 [TRACE] vertex "local.subnets": evaluating
2020/05/09 21:29:38 [TRACE] [walkValidate] Entering eval tree: local.subnets
2020/05/09 21:29:38 [TRACE] <root>: eval: *terraform.EvalLocal
2020/05/09 21:29:38 [ERROR] <root>: eval: *terraform.EvalLocal, err: Invalid expanding argument value: The expanding argument (indicated by ...) must be of a tuple, list, or set type.
2020/05/09 21:29:38 [TRACE] [walkValidate] Exiting eval tree: local.subnets
2020/05/09 21:29:38 [TRACE] vertex "local.subnets": visit complete
2020/05/09 21:29:38 [TRACE] dag/walk: upstream of "meta.count-boundary (EachMode fixup)" errored, so skipping

Error: Invalid expanding argument value

  on locals.tf line 19, in locals:
  19:   subnets = cidrsubnets(var.vpc_cidr, local.newbits...)

The expanding argument (indicated by ...) must be of a tuple, list, or set
type.

Crash Output

Expected Behavior

cidrsubnets should return a list of 9 subnets.

Actual Behavior

Calling terraform validate or terraform apply ends up with error message like this:

→ terraform validate

Error: Invalid expanding argument value

  on locals.tf line 19, in locals:
  19:   subnets = cidrsubnets(var.vpc_cidr, local.newbits...)

The expanding argument (indicated by ...) must be of a tuple, list, or set
type.

Steps to Reproduce

  1. terraform validate
  2. terraform apply also fails.

Additional Context

I'm converting a list of strings into a list of numbers. Then, I'm concatenating three lists of numbers, so that they make a bigger list of numbers. Then I'm passing the long list of numbers as numbits to cidrsubnets and expanding it, as cidrsubnets does not accept the list by itself.

If I don't expand it - i.e. i use:

subnets = cidrsubnets(var.vpc_cidr, local.newbits)

i get following error with terraform apply:

→ terraform apply

Error: Invalid function argument

  on locals.tf line 19, in locals:
  19:   subnets = cidrsubnets(var.vpc_cidr, local.newbits)
    |----------------
    | local.newbits is tuple with 9 elements

Invalid value for "newbits" parameter: number required.

So it sees it's a tuple, but then refuses to do the expansion. Also, I fund this terraform module: https://github.com/hashicorp/terraform-cidr-subnets/blob/master/main.tf where it follows similar approach, but with variables instead of locals. I tried it, and then it passes validation correctly. Looks like terraform fails to infer type of a local value in some cases (expansion) but it can infer it in other cases (when I don'd attempt expansion it says it's a tuple).

References

apparentlymart commented 4 years ago

Hi @mkielar! Sorry for this odd behavior, and thanks for the straightforward reproduction case.

I think you've hit the same underlying bug as hashicorp/terraform#24699 here. I believe this is actually an interaction between two different bugs:

The first of the bugs above applies to both this one and hashicorp/terraform#24699. The second one is unique to this particular issue, though fixing the first one would make the second one less important because it would change from being an error to just producing incomplete type information that could cause downstream validation to be skipped.

I think the fix over in HCL would be to add a new case to the switch statement that returns this error for if expandVal.Type() is cty.DynamicPseudoType, which is what it would return if the type isn't known yet. In that case, the function should immediately return cty.DynamicVal, diags and not attempt to execute the function yet. That will then allow the initial validation to succeed, so that later on the function call can be attempted again with full type information and produce the actual result.

apparentlymart commented 4 years ago

I think this is the same root cause as #22404, so I'm going to close this only to consolidate the discussion there. Thanks again!

ghost commented 4 years ago

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.

If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.