Skip to content

fix(blockStorage): Prevent panic while detaching block storage #464

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

Merged

Conversation

wonchulee
Copy link
Collaborator

@wonchulee wonchulee commented Oct 18, 2024

  • It adds a guard to prevent panic in the detaching block storage step in a specific case.

  • reproduce condition

    • User creates KVM server and attaches block storage by themself (using Terraform)
    • destroy the server but keep the block storage

Step 1.

resource "ncloud_server" "kvm-server" {
  subnet_no                 = ncloud_subnet.subnet_private.id
  name                      = "tf-kvm-server"
  server_image_number       = data.ncloud_server_image_numbers.kvm-image.image_number_list.0.server_image_number
  server_spec_code          = data.ncloud_server_specs.kvm-spec.server_spec_list.0.server_spec_code
  login_key_name            = ncloud_login_key.kvm-loginkey.key_name
}

resource "ncloud_block_storage" "kvm-storage" {
  size = "10"
  server_instance_no = ncloud_server.kvm-server.id
  name = "tf-kvm-storage"
  hypervisor_type = "KVM"
  volume_type = "CB1"
  zone = "KR-1"
}

Step 2.

# resource "ncloud_server" "kvm-server" {
#   subnet_no                 = ncloud_subnet.subnet_private.id
#   name                      = "tf-kvm-server"
#   server_image_number       = data.ncloud_server_image_numbers.kvm-image.image_number_list.0.server_image_number
#   server_spec_code          = data.ncloud_server_specs.kvm-spec.server_spec_list.0.server_spec_code
#   login_key_name            = ncloud_login_key.kvm-loginkey.key_name
# }

resource "ncloud_block_storage" "kvm-storage" {
  size = "10"
  
  # server_instance_no = ncloud_server.kvm-server.id
  name = "tf-kvm-storage"
  hypervisor_type = "KVM"
  volume_type = "CB1"
  zone = "KR-1"
}
  • Error
│ Error: Request cancelled
│
│ The plugin6.(*GRPCProvider).ApplyResourceChange request was cancelled.
╵

Stack trace from the terraform-provider-ncloud plugin:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0xc0 pc=0x1037402ec]

goroutine 120 [running]:
github.com/terraform-providers/terraform-provider-ncloud/internal/service/server.detachThenWaitServerInstance.func1()
	/Users/wonchul/work/ncloud/terraform/terraform-provider-ncloud/internal/service/server/server.go:1033 +0x2c
github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.(*StateChangeConf).WaitForStateContext.func1()
	/Users/wonchul/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/retry/state.go:113 +0x140
created by github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry.(*StateChangeConf).WaitForStateContext in goroutine 94
	/Users/wonchul/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk/[email protected]/helper/retry/state.go:86 +0x1d0

Error: The terraform-provider-ncloud plugin crashed!

This is always indicative of a bug within the plugin. It would be immensely
helpful if you could report the crash with the plugin's maintainers so that it
can be fixed. The output above should help diagnose the issue.

@wonchulee wonchulee requested a review from youngmn as a code owner October 18, 2024 13:46
@wonchulee wonchulee merged commit 6546d71 into NaverCloudPlatform:main Oct 18, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant