mirror of
https://gitlab.nic.cz/knot/knot-dns.git
synced 2026-05-28 04:02:31 -04:00
zonedb-reload: when recreating zone, replan also refresh...
...as it might be planned by incomming NOTIFY during zonedb-reload and in this case its not in timers
This commit is contained in:
parent
920b50104d
commit
46fd73e369
2 changed files with 41 additions and 0 deletions
|
|
@ -56,6 +56,7 @@ static void replan_from_zone(zone_t *zone, zone_t *old_zone)
|
|||
replan_ddns(zone, old_zone);
|
||||
|
||||
const zone_event_type_t types[] = {
|
||||
ZONE_EVENT_REFRESH,
|
||||
ZONE_EVENT_FLUSH,
|
||||
ZONE_EVENT_BACKUP,
|
||||
ZONE_EVENT_NOTIFY,
|
||||
|
|
|
|||
40
tests-extra/tests/zone/reload_notify/test.py
Normal file
40
tests-extra/tests/zone/reload_notify/test.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
'''Test race conditions about incomming NOTIFY during zonedb-reload'''
|
||||
|
||||
from dnstest.test import Test
|
||||
from dnstest.utils import *
|
||||
|
||||
import random
|
||||
import threading
|
||||
|
||||
t = Test()
|
||||
|
||||
master = t.server("knot")
|
||||
slave = t.server("knot")
|
||||
zones = t.zone_rnd(60, dnssec=False, records=10)
|
||||
t.link(zones, master, slave, ixfr=True)
|
||||
|
||||
t.start()
|
||||
|
||||
serials = slave.zones_wait(zones)
|
||||
|
||||
def send_reload(server):
|
||||
server.ctl("reload")
|
||||
|
||||
def send_update(up):
|
||||
up.send()
|
||||
|
||||
for z in zones:
|
||||
up = master.update(z)
|
||||
up.add("dojdojwodijowjeojdwe", 3600, "A", "1.2.3.4")
|
||||
|
||||
threading.Thread(target=send_update, args=[up]).start()
|
||||
|
||||
t.sleep(random.choice([0.1, 0.2, 0.5, 1, 2, 4]))
|
||||
|
||||
slave.reload()
|
||||
|
||||
slave.zones_wait(zones, serials)
|
||||
|
||||
t.end()
|
||||
Loading…
Reference in a new issue