diff --git a/src/knot/events/replan.c b/src/knot/events/replan.c index 007ddfa79..da91518cd 100644 --- a/src/knot/events/replan.c +++ b/src/knot/events/replan.c @@ -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, diff --git a/tests-extra/tests/zone/reload_notify/test.py b/tests-extra/tests/zone/reload_notify/test.py new file mode 100644 index 000000000..9709ff577 --- /dev/null +++ b/tests-extra/tests/zone/reload_notify/test.py @@ -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()