Fix periodic secondary refresh task
It always fails with silly error: 2025-02-27 08:44:33.449 793 ERROR oslo_service.threadgroup File "/var/lib/kolla/venv/lib/python3.10/site-packages/designate/producer/tasks.py", line 206, in _call_ 2025-02-27 08:44:33.449 793 ERROR oslo_service.threadgroup transferred = timeutils.parse_isotime(zone.transferred_at) 2025-02-27 08:44:33.449 793 ERROR oslo_service.threadgroup File "/var/lib/kolla/venv/lib/python3.10/site-packages/oslo_utils/timeutils.py", line 46, in parse_isotime 2025-02-27 08:44:33.449 793 ERROR oslo_service.threadgroup raise ValueError(str(e)) 2025-02-27 08:44:33.449 793 ERROR oslo_service.threadgroup ValueError: expected string or bytes-like object Closes-Bug: #2100881 Change-Id: Ia6305a8952b80515dd0f02eaba3bc89a8638a31b
This commit is contained in:
parent
05ffe294ec
commit
a265c5070b
@ -203,7 +203,7 @@ class PeriodicSecondaryRefreshTask(PeriodicTask):
|
||||
|
||||
now = timeutils.utcnow(True)
|
||||
|
||||
transferred = timeutils.parse_isotime(zone.transferred_at)
|
||||
transferred = timeutils.parse_isotime(str(zone.transferred_at))
|
||||
seconds = timeutils.delta_seconds(transferred, now)
|
||||
if seconds > zone.refresh:
|
||||
LOG.debug(
|
||||
|
@ -20,6 +20,7 @@ from unittest import mock
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import timeutils
|
||||
|
||||
from designate.central.rpcapi import CentralAPI
|
||||
from designate.producer import tasks
|
||||
from designate.storage import sql
|
||||
from designate.storage.sqlalchemy import tables
|
||||
@ -194,3 +195,38 @@ class PeriodicIncrementSerialTaskTest(designate.tests.functional.TestCase):
|
||||
|
||||
self.worker_api.update_zone.assert_called()
|
||||
self.assertEqual(5, self.worker_api.update_zone.call_count)
|
||||
|
||||
|
||||
class PeriodicSecondaryRefreshTaskTest(designate.tests.functional.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
task_class = tasks.PeriodicSecondaryRefreshTask
|
||||
fixture = base_fixtures.ZoneManagerTaskFixture(task_class)
|
||||
self.periodic_secondary_refresh_task_fixture = self.useFixture(fixture)
|
||||
|
||||
def _create_zones(self):
|
||||
refresh = 3600
|
||||
need_refresh = datetime.timedelta(seconds=refresh)
|
||||
do_not_need_refresh = need_refresh / 2
|
||||
now = timeutils.utcnow(True)
|
||||
all_transferred_at = (
|
||||
None,
|
||||
now - need_refresh,
|
||||
now - do_not_need_refresh
|
||||
)
|
||||
email = 'service_central_managed_resource_email@example.org'
|
||||
for name_index, transferred_at in enumerate(all_transferred_at):
|
||||
self.create_zone(
|
||||
name='example_%d.org.' % name_index,
|
||||
email=email,
|
||||
type='SECONDARY',
|
||||
refresh=refresh,
|
||||
transferred_at=transferred_at
|
||||
)
|
||||
|
||||
@mock.patch.object(CentralAPI, 'xfr_zone')
|
||||
def test_refresh_secondary_zone(self, mock_xfr_zone):
|
||||
self._create_zones()
|
||||
self.periodic_secondary_refresh_task_fixture.task()
|
||||
mock_xfr_zone.assert_called_once()
|
||||
|
@ -239,7 +239,7 @@ class PeriodicSecondaryRefreshTest(oslotest.base.BaseTestCase):
|
||||
transferred = timeutils.utcnow(True) - datetime.timedelta(minutes=62)
|
||||
zone = RoObject(
|
||||
id=uuidutils.generate_uuid(),
|
||||
transferred_at=datetime.datetime.isoformat(transferred),
|
||||
transferred_at=transferred,
|
||||
refresh=3600
|
||||
)
|
||||
|
||||
@ -254,7 +254,7 @@ class PeriodicSecondaryRefreshTest(oslotest.base.BaseTestCase):
|
||||
transferred = timeutils.utcnow(True) - datetime.timedelta(minutes=50)
|
||||
zone = RoObject(
|
||||
id=uuidutils.generate_uuid(),
|
||||
transferred_at=datetime.datetime.isoformat(transferred),
|
||||
transferred_at=transferred,
|
||||
refresh=3600
|
||||
)
|
||||
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Refresh secondary zone task was broken. It failed all the time.
|
||||
If MDNS didn't get NOTIFY from master server, the secondary zone didn't get
|
||||
updates. Now it's fixed.
|
Loading…
x
Reference in New Issue
Block a user