-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
random_shuffle crashes when result_count=0 #409
Comments
Hi @leonseng 👋 Thank you for reporting this issue. I have added a triage label to mark this issue for upcoming discussion. |
I was able to reproduce that a terraform {
required_providers {
random = {
source = "hashicorp/random"
version = "3.6.0"
}
}
}
resource "random_shuffle" "test" {
input = ["hello", "world"]
result_count = 0
}
output "test" {
value = random_shuffle.test.result
} $ terraform apply
Terraform used the selected providers to generate the following execution plan. Resource actions
are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# random_shuffle.test will be created
+ resource "random_shuffle" "test" {
+ id = (known after apply)
+ input = [
+ "hello",
+ "world",
]
+ result = (known after apply)
+ result_count = 0
}
Plan: 1 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ test = (known after apply)
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
random_shuffle.test: Creating...
╷
│ Error: Provider produced inconsistent result after apply
│
│ When applying changes to random_shuffle.test, provider
│ "provider[\"registry.terraform.io/hashicorp/random\"]" produced an unexpected new value:
│ .result_count: was cty.NumberIntVal(0), but now cty.NumberIntVal(2).
│
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.
╵ I believe the requested/expected behavior originally noted in this bug report, setting |
… result_count is set to 0 Reference: #409 Previously, Terraform would return an error because the configuration value for `result_count` was overwritten during resource creation. ``` │ Error: Provider produced inconsistent result after apply │ │ When applying changes to random_shuffle.test, provider │ "provider[\"registry.terraform.io/hashicorp/random\"]" produced an unexpected new value: │ .result_count: was cty.NumberIntVal(0), but now cty.NumberIntVal(2). │ │ This is a bug in the provider, which should be reported in the provider's own issue tracker. ``` This change will cause the resource creation to not modify any configuration value data and also return early with an empty list for `result` if `result_count` is explicitly configured as `0` or if `input` has no elements. Output from acceptance testing: ```console $ TF_ACC=1 go test -count=1 -run='TestAccResourceShuffle_' -timeout=10m -v ./internal/provider === RUN TestAccResourceShuffle_Keepers_Keep_EmptyMap === PAUSE TestAccResourceShuffle_Keepers_Keep_EmptyMap === RUN TestAccResourceShuffle_Keepers_Keep_EmptyMapToNullValue === PAUSE TestAccResourceShuffle_Keepers_Keep_EmptyMapToNullValue === RUN TestAccResourceShuffle_Keepers_Keep_NullMap === PAUSE TestAccResourceShuffle_Keepers_Keep_NullMap === RUN TestAccResourceShuffle_Keepers_Keep_NullMapToNullValue === PAUSE TestAccResourceShuffle_Keepers_Keep_NullMapToNullValue === RUN TestAccResourceShuffle_Keepers_Keep_NullValue === PAUSE TestAccResourceShuffle_Keepers_Keep_NullValue === RUN TestAccResourceShuffle_Keepers_Keep_NullValues === PAUSE TestAccResourceShuffle_Keepers_Keep_NullValues === RUN TestAccResourceShuffle_Keepers_Keep_Value === PAUSE TestAccResourceShuffle_Keepers_Keep_Value === RUN TestAccResourceShuffle_Keepers_Keep_Values === PAUSE TestAccResourceShuffle_Keepers_Keep_Values === RUN TestAccResourceShuffle_Keepers_Replace_EmptyMapToValue === PAUSE TestAccResourceShuffle_Keepers_Replace_EmptyMapToValue === RUN TestAccResourceShuffle_Keepers_Replace_NullMapToValue === PAUSE TestAccResourceShuffle_Keepers_Replace_NullMapToValue === RUN TestAccResourceShuffle_Keepers_Replace_NullValueToValue === PAUSE TestAccResourceShuffle_Keepers_Replace_NullValueToValue === RUN TestAccResourceShuffle_Keepers_Replace_ValueToEmptyMap === PAUSE TestAccResourceShuffle_Keepers_Replace_ValueToEmptyMap === RUN TestAccResourceShuffle_Keepers_Replace_ValueToNullMap === PAUSE TestAccResourceShuffle_Keepers_Replace_ValueToNullMap === RUN TestAccResourceShuffle_Keepers_Replace_ValueToNullValue === PAUSE TestAccResourceShuffle_Keepers_Replace_ValueToNullValue === RUN TestAccResourceShuffle_Keepers_Replace_ValueToNewValue === PAUSE TestAccResourceShuffle_Keepers_Replace_ValueToNewValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToNullValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToNullValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleNullValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleNullValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValueToValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValueToValue === RUN TestAccResourceShuffle_ResultCount_Zero === PAUSE TestAccResourceShuffle_ResultCount_Zero === RUN TestAccResourceShuffle_ResultCount_Shorter --- PASS: TestAccResourceShuffle_ResultCount_Shorter (2.51s) === RUN TestAccResourceShuffle_ResultCount_Longer --- PASS: TestAccResourceShuffle_ResultCount_Longer (0.50s) === RUN TestAccResourceShuffle_Input_Empty --- PASS: TestAccResourceShuffle_Input_Empty (0.50s) === RUN TestAccResourceShuffle_Input_One --- PASS: TestAccResourceShuffle_Input_One (0.49s) === RUN TestAccResourceShuffle_UpgradeFromVersion3_3_2 --- PASS: TestAccResourceShuffle_UpgradeFromVersion3_3_2 (20.27s) === CONT TestAccResourceShuffle_Keepers_Keep_EmptyMap === CONT TestAccResourceShuffle_Keepers_Replace_ValueToEmptyMap === CONT TestAccResourceShuffle_Keepers_Keep_Value === CONT TestAccResourceShuffle_Keepers_Keep_NullMapToNullValue === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleNullValue === CONT TestAccResourceShuffle_ResultCount_Zero === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValueToValue === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValue === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleValue === CONT TestAccResourceShuffle_Keepers_Keep_NullMap --- PASS: TestAccResourceShuffle_ResultCount_Zero (0.68s) === CONT TestAccResourceShuffle_Keepers_Keep_NullValues --- PASS: TestAccResourceShuffle_Keepers_Keep_Value (1.07s) === CONT TestAccResourceShuffle_Keepers_Replace_ValueToNewValue --- PASS: TestAccResourceShuffle_Keepers_Keep_NullMap (1.08s) === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToValue --- PASS: TestAccResourceShuffle_Keepers_Keep_EmptyMap (1.08s) === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToNullValue --- PASS: TestAccResourceShuffle_Keepers_Replace_ValueToEmptyMap (1.14s) === CONT TestAccResourceShuffle_Keepers_Keep_NullValue --- PASS: TestAccResourceShuffle_Keepers_Keep_NullMapToNullValue (1.20s) === CONT TestAccResourceShuffle_Keepers_Replace_NullMapToValue --- PASS: TestAccResourceShuffle_Keepers_Keep_NullValues (0.96s) === CONT TestAccResourceShuffle_Keepers_Replace_NullValueToValue --- PASS: TestAccResourceShuffle_Keepers_Keep_NullValue (0.86s) === CONT TestAccResourceShuffle_Keepers_Replace_ValueToNullValue --- PASS: TestAccResourceShuffle_Keepers_Replace_ValueToNewValue (0.97s) === CONT TestAccResourceShuffle_Keepers_Keep_Values --- PASS: TestAccResourceShuffle_Keepers_Replace_NullMapToValue (0.94s) === CONT TestAccResourceShuffle_Keepers_Replace_ValueToNullMap --- PASS: TestAccResourceShuffle_Keepers_Replace_NullValueToValue (0.93s) === CONT TestAccResourceShuffle_Keepers_Keep_EmptyMapToNullValue --- PASS: TestAccResourceShuffle_Keepers_Replace_ValueToNullValue (0.96s) === CONT TestAccResourceShuffle_Keepers_Replace_EmptyMapToValue --- PASS: TestAccResourceShuffle_Keepers_Keep_Values (0.92s) --- PASS: TestAccResourceShuffle_Keepers_Replace_ValueToNullMap (0.96s) --- PASS: TestAccResourceShuffle_Keepers_Keep_EmptyMapToNullValue (0.91s) --- PASS: TestAccResourceShuffle_Keepers_Replace_EmptyMapToValue (0.86s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleNullValue (16.50s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleValue (17.15s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValue (17.83s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValueToValue (18.49s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToValue (29.52s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToNullValue (30.21s) PASS ok github.com/terraform-providers/terraform-provider-random/internal/provider 59.548s ```
… result_count is set to 0 (#537) Reference: #409 Previously, Terraform would return an error because the configuration value for `result_count` was overwritten during resource creation. ``` │ Error: Provider produced inconsistent result after apply │ │ When applying changes to random_shuffle.test, provider │ "provider[\"registry.terraform.io/hashicorp/random\"]" produced an unexpected new value: │ .result_count: was cty.NumberIntVal(0), but now cty.NumberIntVal(2). │ │ This is a bug in the provider, which should be reported in the provider's own issue tracker. ``` This change will cause the resource creation to not modify any configuration value data and also return early with an empty list for `result` if `result_count` is explicitly configured as `0` or if `input` has no elements. Output from acceptance testing: ```console $ TF_ACC=1 go test -count=1 -run='TestAccResourceShuffle_' -timeout=10m -v ./internal/provider === RUN TestAccResourceShuffle_Keepers_Keep_EmptyMap === PAUSE TestAccResourceShuffle_Keepers_Keep_EmptyMap === RUN TestAccResourceShuffle_Keepers_Keep_EmptyMapToNullValue === PAUSE TestAccResourceShuffle_Keepers_Keep_EmptyMapToNullValue === RUN TestAccResourceShuffle_Keepers_Keep_NullMap === PAUSE TestAccResourceShuffle_Keepers_Keep_NullMap === RUN TestAccResourceShuffle_Keepers_Keep_NullMapToNullValue === PAUSE TestAccResourceShuffle_Keepers_Keep_NullMapToNullValue === RUN TestAccResourceShuffle_Keepers_Keep_NullValue === PAUSE TestAccResourceShuffle_Keepers_Keep_NullValue === RUN TestAccResourceShuffle_Keepers_Keep_NullValues === PAUSE TestAccResourceShuffle_Keepers_Keep_NullValues === RUN TestAccResourceShuffle_Keepers_Keep_Value === PAUSE TestAccResourceShuffle_Keepers_Keep_Value === RUN TestAccResourceShuffle_Keepers_Keep_Values === PAUSE TestAccResourceShuffle_Keepers_Keep_Values === RUN TestAccResourceShuffle_Keepers_Replace_EmptyMapToValue === PAUSE TestAccResourceShuffle_Keepers_Replace_EmptyMapToValue === RUN TestAccResourceShuffle_Keepers_Replace_NullMapToValue === PAUSE TestAccResourceShuffle_Keepers_Replace_NullMapToValue === RUN TestAccResourceShuffle_Keepers_Replace_NullValueToValue === PAUSE TestAccResourceShuffle_Keepers_Replace_NullValueToValue === RUN TestAccResourceShuffle_Keepers_Replace_ValueToEmptyMap === PAUSE TestAccResourceShuffle_Keepers_Replace_ValueToEmptyMap === RUN TestAccResourceShuffle_Keepers_Replace_ValueToNullMap === PAUSE TestAccResourceShuffle_Keepers_Replace_ValueToNullMap === RUN TestAccResourceShuffle_Keepers_Replace_ValueToNullValue === PAUSE TestAccResourceShuffle_Keepers_Replace_ValueToNullValue === RUN TestAccResourceShuffle_Keepers_Replace_ValueToNewValue === PAUSE TestAccResourceShuffle_Keepers_Replace_ValueToNewValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToNullValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToNullValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleNullValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleNullValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValue === RUN TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValueToValue === PAUSE TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValueToValue === RUN TestAccResourceShuffle_ResultCount_Zero === PAUSE TestAccResourceShuffle_ResultCount_Zero === RUN TestAccResourceShuffle_ResultCount_Shorter --- PASS: TestAccResourceShuffle_ResultCount_Shorter (2.51s) === RUN TestAccResourceShuffle_ResultCount_Longer --- PASS: TestAccResourceShuffle_ResultCount_Longer (0.50s) === RUN TestAccResourceShuffle_Input_Empty --- PASS: TestAccResourceShuffle_Input_Empty (0.50s) === RUN TestAccResourceShuffle_Input_One --- PASS: TestAccResourceShuffle_Input_One (0.49s) === RUN TestAccResourceShuffle_UpgradeFromVersion3_3_2 --- PASS: TestAccResourceShuffle_UpgradeFromVersion3_3_2 (20.27s) === CONT TestAccResourceShuffle_Keepers_Keep_EmptyMap === CONT TestAccResourceShuffle_Keepers_Replace_ValueToEmptyMap === CONT TestAccResourceShuffle_Keepers_Keep_Value === CONT TestAccResourceShuffle_Keepers_Keep_NullMapToNullValue === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleNullValue === CONT TestAccResourceShuffle_ResultCount_Zero === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValueToValue === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValue === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleValue === CONT TestAccResourceShuffle_Keepers_Keep_NullMap --- PASS: TestAccResourceShuffle_ResultCount_Zero (0.68s) === CONT TestAccResourceShuffle_Keepers_Keep_NullValues --- PASS: TestAccResourceShuffle_Keepers_Keep_Value (1.07s) === CONT TestAccResourceShuffle_Keepers_Replace_ValueToNewValue --- PASS: TestAccResourceShuffle_Keepers_Keep_NullMap (1.08s) === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToValue --- PASS: TestAccResourceShuffle_Keepers_Keep_EmptyMap (1.08s) === CONT TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToNullValue --- PASS: TestAccResourceShuffle_Keepers_Replace_ValueToEmptyMap (1.14s) === CONT TestAccResourceShuffle_Keepers_Keep_NullValue --- PASS: TestAccResourceShuffle_Keepers_Keep_NullMapToNullValue (1.20s) === CONT TestAccResourceShuffle_Keepers_Replace_NullMapToValue --- PASS: TestAccResourceShuffle_Keepers_Keep_NullValues (0.96s) === CONT TestAccResourceShuffle_Keepers_Replace_NullValueToValue --- PASS: TestAccResourceShuffle_Keepers_Keep_NullValue (0.86s) === CONT TestAccResourceShuffle_Keepers_Replace_ValueToNullValue --- PASS: TestAccResourceShuffle_Keepers_Replace_ValueToNewValue (0.97s) === CONT TestAccResourceShuffle_Keepers_Keep_Values --- PASS: TestAccResourceShuffle_Keepers_Replace_NullMapToValue (0.94s) === CONT TestAccResourceShuffle_Keepers_Replace_ValueToNullMap --- PASS: TestAccResourceShuffle_Keepers_Replace_NullValueToValue (0.93s) === CONT TestAccResourceShuffle_Keepers_Keep_EmptyMapToNullValue --- PASS: TestAccResourceShuffle_Keepers_Replace_ValueToNullValue (0.96s) === CONT TestAccResourceShuffle_Keepers_Replace_EmptyMapToValue --- PASS: TestAccResourceShuffle_Keepers_Keep_Values (0.92s) --- PASS: TestAccResourceShuffle_Keepers_Replace_ValueToNullMap (0.96s) --- PASS: TestAccResourceShuffle_Keepers_Keep_EmptyMapToNullValue (0.91s) --- PASS: TestAccResourceShuffle_Keepers_Replace_EmptyMapToValue (0.86s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleNullValue (16.50s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToMultipleValue (17.15s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValue (17.83s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapValueToValue (18.49s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToValue (29.52s) --- PASS: TestAccResourceShuffle_Keepers_FrameworkMigration_NullMapToNullValue (30.21s) PASS ok github.com/terraform-providers/terraform-provider-random/internal/provider 59.548s ```
<Actions> <action id="296d75eab55b9d23bd1e94dc34cea43b964c29945c12fefcb674e3c068a0a767"> <h3>Bump Terraform `random` provider version</h3> <details id="1d9343c012f5434ac9fe8a98135bae3667b399259be16d9b14302ea3bd424a24"> <summary>Update Terraform lock file</summary> <p>changes detected:
	"hashicorp/random" updated from "3.6.0" to "3.6.1" in file ".terraform.lock.hcl"</p> <details> <summary>3.6.1</summary> <pre>Changelog retrieved from:
	https://github.com/hashicorp/terraform-provider-random/releases/tag/v3.6.1
BUG FIXES:

* all: Prevent `keepers` from triggering an in-place update following import ([#385](hashicorp/terraform-provider-random#385 resource/random_shuffle: Prevent inconsistent result after apply when result_count is set to 0 ([#409](hashicorp/terraform-provider-random#409 provider/random_password: Fix bug which causes panic when special, upper, lower and number/numeric are all false ([#551](hashicorp/terraform-provider-random#551 provider/random_string: Fix bug which causes panic when special, upper, lower and number/numeric are all false ([#551](https://github.com/hashicorp/terraform-provider-random/issues/551))


</pre> </details> </details> <a href="https://infra.ci.jenkins.io/job/updatecli/job/azure/job/main/118/">Jenkins pipeline link</a> </action> </Actions> --- <table> <tr> <td width="77"> <img src="https://www.updatecli.io/images/updatecli.png" alt="Updatecli logo" width="50" height="50"> </td> <td> <p> Created automatically by <a href="https://www.updatecli.io/">Updatecli</a> </p> <details><summary>Options:</summary> <br /> <p>Most of Updatecli configuration is done via <a href="https://www.updatecli.io/docs/prologue/quick-start/">its manifest(s)</a>.</p> <ul> <li>If you close this pull request, Updatecli will automatically reopen it, the next time it runs.</li> <li>If you close this pull request and delete the base branch, Updatecli will automatically recreate it, erasing all previous commits made.</li> </ul> <p> Feel free to report any issues at <a href="https://github.com/updatecli/updatecli/issues">github.com/updatecli/updatecli</a>.<br /> If you find this tool useful, do not hesitate to star <a href="https://github.com/updatecli/updatecli/stargazers">our GitHub repository</a> as a sign of appreciation, and/or to tell us directly on our <a href="https://matrix.to/#/#Updatecli_community:gitter.im">chat</a>! </p> </details> </td> </tr> </table> Co-authored-by: Jenkins Infra Bot (updatecli) <60776566+jenkins-infra-bot@users.noreply.github.com>
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. |
Terraform CLI and Provider Versions
$ terraform version
Terraform v1.3.6
on linux_amd64
Terraform Configuration
Expected Behavior
random_shuffle.this.result
should return an empty list.Actual Behavior
Provider crashes when running
terraform apply
Steps to Reproduce
terraform apply
How much impact is this issue causing?
High
Logs
https://gist.github.com/leonseng/14969404cbb5fabc137c9e370ef84220
Additional Information
No response
Code of Conduct
The text was updated successfully, but these errors were encountered: