From 7e92092a780816e055189c6d595d4cecc6049559 Mon Sep 17 00:00:00 2001 From: Ryn Daniels Date: Mon, 17 Jun 2019 08:48:16 +0200 Subject: [PATCH 1/5] Final retries for elasticache --- aws/resource_aws_elasticache_parameter_group.go | 12 ++++++++---- aws/resource_aws_elasticache_replication_group.go | 5 ++++- aws/resource_aws_elasticache_subnet_group.go | 8 +++++++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/aws/resource_aws_elasticache_parameter_group.go b/aws/resource_aws_elasticache_parameter_group.go index e8b57cf6bec5..af71b88b7355 100644 --- a/aws/resource_aws_elasticache_parameter_group.go +++ b/aws/resource_aws_elasticache_parameter_group.go @@ -318,10 +318,10 @@ func resourceAwsElasticacheParameterGroupUpdate(d *schema.ResourceData, meta int func resourceAwsElasticacheParameterGroupDelete(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).elasticacheconn - return resource.Retry(3*time.Minute, func() *resource.RetryError { - deleteOpts := elasticache.DeleteCacheParameterGroupInput{ - CacheParameterGroupName: aws.String(d.Id()), - } + deleteOpts := elasticache.DeleteCacheParameterGroupInput{ + CacheParameterGroupName: aws.String(d.Id()), + } + err := resource.Retry(3*time.Minute, func() *resource.RetryError { _, err := conn.DeleteCacheParameterGroup(&deleteOpts) if err != nil { awsErr, ok := err.(awserr.Error) @@ -335,6 +335,10 @@ func resourceAwsElasticacheParameterGroupDelete(d *schema.ResourceData, meta int } return nil }) + if isResourceTimeoutError(err) { + _, err = conn.DeleteCacheParameterGroup(&deleteOpts) + } + return err } func resourceAwsElasticacheParameterHash(v interface{}) int { diff --git a/aws/resource_aws_elasticache_replication_group.go b/aws/resource_aws_elasticache_replication_group.go index 16a23c4b9625..7ee90c214e4b 100644 --- a/aws/resource_aws_elasticache_replication_group.go +++ b/aws/resource_aws_elasticache_replication_group.go @@ -852,8 +852,11 @@ func deleteElasticacheReplicationGroup(replicationGroupID string, conn *elastica } return nil }) + if isResourceTimeoutError(err) { + _, err = conn.DeleteReplicationGroup(input) + } if err != nil { - return err + return fmt.Errorf("error deleting Elasticache Replication Group: %s", err) } log.Printf("[DEBUG] Waiting for deletion: %s", replicationGroupID) diff --git a/aws/resource_aws_elasticache_subnet_group.go b/aws/resource_aws_elasticache_subnet_group.go index fce1e9d53a7d..a94b20a81f48 100644 --- a/aws/resource_aws_elasticache_subnet_group.go +++ b/aws/resource_aws_elasticache_subnet_group.go @@ -153,7 +153,7 @@ func resourceAwsElasticacheSubnetGroupDelete(d *schema.ResourceData, meta interf log.Printf("[DEBUG] Cache subnet group delete: %s", d.Id()) - return resource.Retry(5*time.Minute, func() *resource.RetryError { + err := resource.Retry(5*time.Minute, func() *resource.RetryError { _, err := conn.DeleteCacheSubnetGroup(&elasticache.DeleteCacheSubnetGroupInput{ CacheSubnetGroupName: aws.String(d.Id()), }) @@ -173,4 +173,10 @@ func resourceAwsElasticacheSubnetGroupDelete(d *schema.ResourceData, meta interf } return nil }) + if isResourceTimeoutError(err) { + _, err = conn.DeleteCacheSubnetGroup(&elasticache.DeleteCacheSubnetGroupInput{ + CacheSubnetGroupName: aws.String(d.Id()), + }) + } + return err } From e45967fafefb0970d97ad816f39f30e3204de594 Mon Sep 17 00:00:00 2001 From: Ryn Daniels Date: Tue, 18 Jun 2019 09:48:16 +0200 Subject: [PATCH 2/5] Update aws/resource_aws_elasticache_parameter_group.go Co-Authored-By: Brian Flad --- aws/resource_aws_elasticache_parameter_group.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/aws/resource_aws_elasticache_parameter_group.go b/aws/resource_aws_elasticache_parameter_group.go index af71b88b7355..5ba7db1ea350 100644 --- a/aws/resource_aws_elasticache_parameter_group.go +++ b/aws/resource_aws_elasticache_parameter_group.go @@ -338,7 +338,15 @@ func resourceAwsElasticacheParameterGroupDelete(d *schema.ResourceData, meta int if isResourceTimeoutError(err) { _, err = conn.DeleteCacheParameterGroup(&deleteOpts) } - return err + if isAWSErr(err, elasticache.ErrCodeCacheParameterGroupNotFoundFault, "") + return nil + } + + if err != nil { + return fmt.Errorf("error deleting Elasticache Parameter Group (%s): %s", d.Id(), err) + } + + return nil } func resourceAwsElasticacheParameterHash(v interface{}) int { From b0aae623f2c6e184f28552bc6b7699ee154342be Mon Sep 17 00:00:00 2001 From: Ryn Daniels Date: Tue, 18 Jun 2019 09:48:26 +0200 Subject: [PATCH 3/5] Update aws/resource_aws_elasticache_replication_group.go Co-Authored-By: Brian Flad --- aws/resource_aws_elasticache_replication_group.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/aws/resource_aws_elasticache_replication_group.go b/aws/resource_aws_elasticache_replication_group.go index 7ee90c214e4b..44d96fdf382b 100644 --- a/aws/resource_aws_elasticache_replication_group.go +++ b/aws/resource_aws_elasticache_replication_group.go @@ -855,6 +855,11 @@ func deleteElasticacheReplicationGroup(replicationGroupID string, conn *elastica if isResourceTimeoutError(err) { _, err = conn.DeleteReplicationGroup(input) } + + if isAWSErr(err, elasticache.ErrCodeReplicationGroupNotFoundFault, "") { + return nil + } + if err != nil { return fmt.Errorf("error deleting Elasticache Replication Group: %s", err) } From a256c7eaff41e9fdfb688c98f24f25d5dcdfa2c4 Mon Sep 17 00:00:00 2001 From: Ryn Daniels Date: Tue, 18 Jun 2019 09:48:36 +0200 Subject: [PATCH 4/5] Update aws/resource_aws_elasticache_subnet_group.go Co-Authored-By: Brian Flad --- aws/resource_aws_elasticache_subnet_group.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/aws/resource_aws_elasticache_subnet_group.go b/aws/resource_aws_elasticache_subnet_group.go index a94b20a81f48..e8f8caf5ae25 100644 --- a/aws/resource_aws_elasticache_subnet_group.go +++ b/aws/resource_aws_elasticache_subnet_group.go @@ -178,5 +178,14 @@ func resourceAwsElasticacheSubnetGroupDelete(d *schema.ResourceData, meta interf CacheSubnetGroupName: aws.String(d.Id()), }) } - return err + + if isAWSErr(err, elasticache.ErrCodeCacheSubnetGroupNotFoundFault, "") { + return nil + } + + if err != nil { + return fmt.Errorf("error deleting Elasticache Subnet Group (%s): %s", d.Id(), err) + } + + return nil } From 7f07aaa03f18d18f7b6336fabe0e9913ce57a993 Mon Sep 17 00:00:00 2001 From: Ryn Daniels Date: Tue, 18 Jun 2019 10:14:40 +0200 Subject: [PATCH 5/5] missing bracket --- aws/resource_aws_elasticache_parameter_group.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws/resource_aws_elasticache_parameter_group.go b/aws/resource_aws_elasticache_parameter_group.go index 5ba7db1ea350..57158908100f 100644 --- a/aws/resource_aws_elasticache_parameter_group.go +++ b/aws/resource_aws_elasticache_parameter_group.go @@ -338,7 +338,7 @@ func resourceAwsElasticacheParameterGroupDelete(d *schema.ResourceData, meta int if isResourceTimeoutError(err) { _, err = conn.DeleteCacheParameterGroup(&deleteOpts) } - if isAWSErr(err, elasticache.ErrCodeCacheParameterGroupNotFoundFault, "") + if isAWSErr(err, elasticache.ErrCodeCacheParameterGroupNotFoundFault, "") { return nil }