There is a race condition when adding a new recordset to a zone
and when central is processing the update_status from a previous
recordset/zone operation. In the subsequent recordset operation,
central fails to update the zone's action/status in DB to UPDATE/PENDING.
It remains as NONE/ACTIVE, and worker error's out.
Each operation retrieves a different copy in memory of the Zone object
(when it calls self.storage.get_zone). As a result this does not update
the obj_changes field for the zone object for the latter operation.
Therefore the DB update doesn't update any values.
update_status should be synchronized as it updates zone DB
Change-Id: Ib4e0bc567ba8eb54c61c3921d165521bf2f12206
Closes-Bug: #1713875
(cherry picked from commit 12cd654b143e215dbe01cc2688a7d6e6cf3ce62f)
Reviewed: https:/ /review. openstack. org/604612 /git.openstack. org/cgit/ openstack/ designate/ commit/ ?id=7c2a3be3e42 cc72b6b03c9b6cb 67393d423e5e21
Committed: https:/
Submitter: Zuul
Branch: stable/pike
commit 7c2a3be3e42cc72 b6b03c9b6cb6739 3d423e5e21
Author: Arjun Baindur <email address hidden>
Date: Tue Jul 31 14:36:32 2018 -0700
Make update_status use synchronized_zone
There is a race condition when adding a new recordset to a zone
and when central is processing the update_status from a previous
recordset/zone operation. In the subsequent recordset operation,
central fails to update the zone's action/status in DB to UPDATE/PENDING.
It remains as NONE/ACTIVE, and worker error's out.
Each operation retrieves a different copy in memory of the Zone object get_zone) . As a result this does not update
(when it calls self.storage.
the obj_changes field for the zone object for the latter operation.
Therefore the DB update doesn't update any values.
update_status should be synchronized as it updates zone DB
Change-Id: Ib4e0bc567ba8eb 54c61c3921d1655 21bf2f12206 dbe01cc2688a7d6 e6cf3ce62f)
Closes-Bug: #1713875
(cherry picked from commit 12cd654b143e215