Skip to content

Set ends up with additional empty elements #652

@eddycharly

Description

@eddycharly

When using a schema.Set, i end up with additional elements in the set (on update) with all fields initialized with default values.

Let's say i have a configuration like this (instance_group is the set here):

resource "cluster" "cluster" {
  instance_group {
    name = "compute-0"
    // ...
  }
  instance_group {
    name = "compute-1"
    // ...
  }
}

And i want to change it to something like this:

resource "cluster" "cluster" {
  instance_group {
    name = "node-0"
    // ...
  }
  instance_group {
    name = "node-1"
    // ...
  }
}

When i apply this change, the set contains node-0 and node-1 instance groups plus one empty element. I would expect the set to contain only node-0 and node-1.

SDK version

	github.com/hashicorp/terraform-plugin-sdk/v2 v2.3.0

Expected Behavior

Given the example above i would have expected to receive only node-0 and node-1 in the set elements when update function is invoked.

Actual Behavior

Update function receives node-0, node-1 and an additional empty element in the set elements.

Not sure it this behavior is expected, it looks a bit unnatural to me but maybe i'm missing something.
Correct me if i'm wrong, there's nothing bad returning a set when terraform calls the read function to refresh the state ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingsubsystem/typesIssues and feature requests related to the type system of Terraform and our shims around it.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions