I did some debug, zone_master record was deleted by delete_zone_master, here is its call stack mysql> select * from zone_masters; +----------------------------------+---------+---------------------+---------------------+------------+------+----------------------------------+ | id | version | created_at | updated_at | host | port | zone_id | +----------------------------------+---------+---------------------+---------------------+------------+------+----------------------------------+ | 10a355b8d22d41ae8c35d52ce8db1ae5 | 214 | 2022-11-28 08:21:44 | 2022-11-28 08:22:20 | 10.5.2.242 | 5354 | 30ebe0fdd67647d885f93eb817328c6b | +----------------------------------+---------+---------------------+---------------------+------------+------+----------------------------------+ # nc 127.0.0.1 4444 > /usr/lib/python3/dist-packages/designate/storage/impl_sqlalchemy/__init__.py(586)delete_zone_master() -> zone_master = self._find_zone_masters( (Pdb) where /usr/lib/python3/dist-packages/eventlet/greenpool.py(88)_spawn_n_impl() -> func(*args, **kwargs) /usr/lib/python3/dist-packages/futurist/_green.py(71)__call__() -> self.work.run() /usr/lib/python3/dist-packages/futurist/_utils.py(52)run() -> result = self.fn(*self.args, **self.kwargs) /usr/lib/python3/dist-packages/oslo_messaging/rpc/server.py(165)_process_incoming() -> res = self.dispatcher.dispatch(message) /usr/lib/python3/dist-packages/oslo_messaging/rpc/dispatcher.py(276)dispatch() -> return self._do_dispatch(endpoint, method, ctxt, args) /usr/lib/python3/dist-packages/oslo_messaging/rpc/dispatcher.py(196)_do_dispatch() -> result = func(ctxt, **new_args) /usr/lib/python3/dist-packages/designate/rpc.py(238)exception_wrapper() -> return f(self, *args, **kwargs) /usr/lib/python3/dist-packages/designate/central/service.py(151)notification_wrapper() -> result = f(self, *args, **kwargs) /usr/lib/python3/dist-packages/designate/central/service.py(151)notification_wrapper() -> result = f(self, *args, **kwargs) /usr/lib/python3/dist-packages/designate/storage/__init__.py(67)retry_wrapper() -> **copy.deepcopy(kwargs)) /usr/lib/python3/dist-packages/designate/storage/__init__.py(105)transaction_wrapper() -> result = f(self, *args, **kwargs) /usr/lib/python3/dist-packages/designate/central/service.py(123)sync_wrapper() -> return f(self, *args, **kwargs) /usr/lib/python3/dist-packages/designate/central/service.py(2380)update_status() -> zone = self._update_zone_status(context, zone_id, status, serial) /usr/lib/python3/dist-packages/designate/central/service.py(2397)_update_zone_status() -> self.storage.update_zone(context, zone) /usr/lib/python3/dist-packages/designate/storage/impl_sqlalchemy/__init__.py(375)update_zone() -> self.delete_zone_master(context, attr.id) > /usr/lib/python3/dist-packages/designate/storage/impl_sqlalchemy/__init__.py(586)delete_zone_master() -> zone_master = self._find_zone_masters( mysql> select * from zone_masters; Empty set (0.00 sec) it seems the return value of self.storage.get_zone(context, zone_id) didn't include zone_master so zone.masters is [] (Pdb) l 373 attr = self._find_zone_masters( 374 context, {'id': i_id}, one=True) 375 self.delete_zone_master(context, attr.id) 376 377 # Update Attributes 378 -> for i in update: 379 self.update_zone_master(context, i) 380 381 # Create Attributes 382 for attr in create: 383 attr.zone_id = zone.id (Pdb) p have {'10a355b8-d22d-41ae-8c35-d52ce8db1ae5'} (Pdb) p keep set() (Pdb) p update [] (Pdb) p create [] (Pdb) p zone.obj_attr_is_set('masters') True (Pdb) p i_id '10a355b8-d22d-41ae-8c35-d52ce8db1ae5' (Pdb) p zone.masters OVO Objects (Pdb) print(list(zone.masters)) []