@@ -12,6 +12,7 @@ import (
1212 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1313 "github.com/pkg/errors"
1414 clb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb/v20180317"
15+ sdkErrors "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
1516
1617 "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
1718)
@@ -344,6 +345,10 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte
344345 } else {
345346 log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
346347 logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
348+ if response == nil || response .Response == nil || response .Response .RequestId == nil {
349+ return resource .NonRetryableError (fmt .Errorf ("Create CLB listener rule failed, Response is nil." ))
350+ }
351+
347352 requestId = * response .Response .RequestId
348353 retryErr := waitForTaskFinish (requestId , meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ())
349354 if retryErr != nil {
@@ -390,10 +395,20 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte
390395 err := resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
391396 response , e := meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ().ModifyDomainAttributes (domainRequest )
392397 if e != nil {
398+ if sdkError , ok := e .(* sdkErrors.TencentCloudSDKError ); ok {
399+ if sdkError .Code == "FailedOperation.ResourceInOperating" {
400+ return resource .RetryableError (e )
401+ }
402+ }
403+
393404 return tccommon .RetryError (e )
394405 } else {
395406 log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
396407 logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
408+ if response == nil || response .Response == nil || response .Response .RequestId == nil {
409+ return resource .NonRetryableError (fmt .Errorf ("Modify domain attributes failed, Response is nil." ))
410+ }
411+
397412 requestId := * response .Response .RequestId
398413 retryErr := waitForTaskFinish (requestId , meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ())
399414 if retryErr != nil {
@@ -428,6 +443,10 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte
428443 } else {
429444 log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
430445 logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
446+ if response == nil || response .Response == nil || response .Response .RequestId == nil {
447+ return resource .NonRetryableError (fmt .Errorf ("Modify rule failed, Response is nil." ))
448+ }
449+
431450 requestId := * response .Response .RequestId
432451 retryErr := waitForTaskFinish (requestId , meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ())
433452 if retryErr != nil {
@@ -674,6 +693,10 @@ func resourceTencentCloudClbListenerRuleUpdate(d *schema.ResourceData, meta inte
674693 } else {
675694 log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
676695 logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
696+ if response == nil || response .Response == nil || response .Response .RequestId == nil {
697+ return resource .NonRetryableError (fmt .Errorf ("Modify rule failed, Response is nil." ))
698+ }
699+
677700 requestId := * response .Response .RequestId
678701 retryErr := waitForTaskFinish (requestId , meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ())
679702 if retryErr != nil {
@@ -744,6 +767,10 @@ func resourceTencentCloudClbListenerRuleUpdate(d *schema.ResourceData, meta inte
744767 } else {
745768 log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
746769 logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
770+ if response == nil || response .Response == nil || response .Response .RequestId == nil {
771+ return resource .NonRetryableError (fmt .Errorf ("Modify domain attributes failed, Response is nil." ))
772+ }
773+
747774 requestId := * response .Response .RequestId
748775 retryErr := waitForTaskFinish (requestId , meta .(tccommon.ProviderMeta ).GetAPIV3Conn ().UseClbClient ())
749776 if retryErr != nil {
0 commit comments