sacloud / terraform-provider-sakuracloud

Terraform provider for SakuraCloud
https://docs.usacloud.jp/terraform
Apache License 2.0
71 stars 23 forks source link

日次CI: TestAccSakuraCloudDatabase_basicの成功率が低い #824

Closed yamamoto-febc closed 3 years ago

yamamoto-febc commented 3 years ago

エラーメッセージ:

resource_sakuracloud_database_test.go:35: Step 2/2 error: Error running apply: exit status 1
          Error: updating SakuraCloud Database[xxx] is failed: Error in response: &sacloud.APIErrorResponse{IsFatal:true, Serial:"xxx", Status:"409 Conflict", ErrorCode:"still_creating", ErrorMessage:"要求された操作を行えません。リソースの作成処理が進行中です。完了後に再度お試しください。"}
            with sakuracloud_database.foobar,
            on terraform_plugin_test.tf line 5, in resource "sakuracloud_database" "foobar":
             5: resource "sakuracloud_database" "foobar" {
yamamoto-febc commented 3 years ago

~409でのリトライを行った方が良いか調査/検討する~ UPDATE: libsacloudでは電源操作の際に一定間隔でリトライするが、一度409が返ってくると電源リクエスト受付済みとみなしてそれ以上の電源操作を行わない。 https://github.com/sacloud/libsacloud/blob/5b5d177ff5ea8fa3b82d5574ab5ea8ca8b95a621/v2/helper/power/power.go#L252-L276

また、初回の電源操作リクエストに409が返ってきた場合はリトライせずにreturnする。 https://github.com/sacloud/libsacloud/blob/5b5d177ff5ea8fa3b82d5574ab5ea8ca8b95a621/v2/helper/power/power.go#L238-L240

API呼び出し側にAPIError(409)を返すのは後者のみ。リトライを検討するのであれば初回リクエストに対してとなる。

yamamoto-febc commented 3 years ago

発生しているタイミングは以下のとおり

Terraform側で処理しても良いがlibsacloud側で対応した方がより汎用的なためそちらで対応する。