Skip to content

Commit d220d59

Browse files
Samir-CitPhilip Jonany
authored and
Philip Jonany
committed
Fix google_dns_record_set with same name throw an error (GoogleCloudPlatform#11622)
1 parent 5c45a66 commit d220d59

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

mmv1/third_party/terraform/services/dns/resource_dns_record_set.go

+18
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,14 @@ func resourceDnsRecordSetCreate(d *schema.ResourceData, meta interface{}) error
375375
chg.Deletions = deletions
376376
}
377377

378+
// Mutex
379+
lockName := fmt.Sprintf("projects/%s/managedZones/%s/rrsets/%s/%s", project, zone, name, rType)
380+
if err != nil {
381+
return err
382+
}
383+
transport_tpg.MutexStore.Lock(lockName)
384+
defer transport_tpg.MutexStore.Unlock(lockName)
385+
378386
log.Printf("[DEBUG] DNS Record create request: %#v", chg)
379387
chg, err = config.NewDnsClient(userAgent).Changes.Create(project, zone, chg).Do()
380388
if err != nil {
@@ -468,7 +476,9 @@ func resourceDnsRecordSetDelete(d *schema.ResourceData, meta interface{}) error
468476
return err
469477
}
470478

479+
name := d.Get("name").(string)
471480
zone := d.Get("managed_zone").(string)
481+
rType := d.Get("type").(string)
472482

473483
// NS and SOA records on the root zone must always have a value,
474484
// so we short-circuit delete this allows terraform delete to work,
@@ -511,6 +521,14 @@ func resourceDnsRecordSetDelete(d *schema.ResourceData, meta interface{}) error
511521
},
512522
}
513523

524+
// Mutex
525+
lockName := fmt.Sprintf("projects/%s/managedZones/%s/rrsets/%s/%s", project, zone, name, rType)
526+
if err != nil {
527+
return err
528+
}
529+
transport_tpg.MutexStore.Lock(lockName)
530+
defer transport_tpg.MutexStore.Unlock(lockName)
531+
514532
log.Printf("[DEBUG] DNS Record delete request: %#v", chg)
515533
chg, err = config.NewDnsClient(userAgent).Changes.Create(project, zone, chg).Do()
516534
if err != nil {

0 commit comments

Comments
 (0)