diff --git a/aws/resource_aws_elasticache_parameter_group.go b/aws/resource_aws_elasticache_parameter_group.go index e8b57cf6bec5..57158908100f 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,18 @@ func resourceAwsElasticacheParameterGroupDelete(d *schema.ResourceData, meta int } return nil }) + if isResourceTimeoutError(err) { + _, err = conn.DeleteCacheParameterGroup(&deleteOpts) + } + 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 { diff --git a/aws/resource_aws_elasticache_replication_group.go b/aws/resource_aws_elasticache_replication_group.go index 16a23c4b9625..44d96fdf382b 100644 --- a/aws/resource_aws_elasticache_replication_group.go +++ b/aws/resource_aws_elasticache_replication_group.go @@ -852,8 +852,16 @@ func deleteElasticacheReplicationGroup(replicationGroupID string, conn *elastica } return nil }) + if isResourceTimeoutError(err) { + _, err = conn.DeleteReplicationGroup(input) + } + + if isAWSErr(err, elasticache.ErrCodeReplicationGroupNotFoundFault, "") { + return nil + } + 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..e8f8caf5ae25 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,19 @@ func resourceAwsElasticacheSubnetGroupDelete(d *schema.ResourceData, meta interf } return nil }) + if isResourceTimeoutError(err) { + _, err = conn.DeleteCacheSubnetGroup(&elasticache.DeleteCacheSubnetGroupInput{ + CacheSubnetGroupName: aws.String(d.Id()), + }) + } + + 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 }