From 4590f6896969596cbb381484327337747bce8bc6 Mon Sep 17 00:00:00 2001 From: Libor Peltan <libor.peltan@nic.cz> Date: Thu, 17 Mar 2022 18:06:54 +0100 Subject: [PATCH] notify/retry: use SOA retry for NOTIFY retry interval --- src/knot/events/handlers/notify.c | 9 ++++++++- tests-extra/tests/notify/retry/test.py | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/knot/events/handlers/notify.c b/src/knot/events/handlers/notify.c index 45be77883b..786c501176 100644 --- a/src/knot/events/handlers/notify.c +++ b/src/knot/events/handlers/notify.c @@ -195,7 +195,14 @@ int event_notify(conf_t *conf, zone_t *zone) if (failed) { notifailed_rmt_dynarray_sort_dedup(&zone->notifailed); - zone_events_schedule_at(zone, ZONE_EVENT_NOTIFY, time(NULL) + 10); // FIXME exponential backoff of NOTIFY retries + + uint32_t retry_in = knot_soa_retry(soa.rrs.rdata); + conf_val_t val = conf_zone_get(conf, C_RETRY_MIN_INTERVAL, zone->name); + retry_in = MAX(retry_in, conf_int(&val)); + val = conf_zone_get(conf, C_RETRY_MAX_INTERVAL, zone->name); + retry_in = MIN(retry_in, conf_int(&val)); + + zone_events_schedule_at(zone, ZONE_EVENT_NOTIFY, time(NULL) + retry_in); } return failed ? KNOT_ERROR : KNOT_EOK; diff --git a/tests-extra/tests/notify/retry/test.py b/tests-extra/tests/notify/retry/test.py index 5ffb932766..7af57000d0 100644 --- a/tests-extra/tests/notify/retry/test.py +++ b/tests-extra/tests/notify/retry/test.py @@ -17,6 +17,8 @@ t.link(zone, master, slave1) t.link(zone, master, slave2) t.link(zone, master, slave3) +master.zones[zone[0].name].retry_max = 10 + t.start() serial = master.zone_wait(zone) -- GitLab