Skip to content
Snippets Groups Projects
Commit 26a64be1 authored by Marek Vavrusa's avatar Marek Vavrusa
Browse files

Progressive bootstrap interval up to 10mins.

parent e59241a8
No related branches found
No related tags found
No related merge requests found
......@@ -321,14 +321,17 @@ static int xfr_task_close(knot_ns_xfr_t *rq)
/* Reschedule failed bootstrap. */
if (rq->type == XFR_TYPE_AIN && !knot_zone_contents(rq->zone)) {
int tmr_s = AXFR_BOOTSTRAP_RETRY * tls_rand();
/* Progressive retry interval up to AXFR_RETRY_MAXTIME */
zd->xfr_in.bootstrap_retry += AXFR_BOOTSTRAP_RETRY * tls_rand();
if (zd->xfr_in.bootstrap_retry > AXFR_RETRY_MAXTIME)
zd->xfr_in.bootstrap_retry = AXFR_RETRY_MAXTIME;
event_t *ev = zd->xfr_in.timer;
if (ev) {
evsched_cancel(ev->parent, ev);
evsched_schedule(ev->parent, ev, tmr_s);
evsched_schedule(ev->parent, ev, zd->xfr_in.bootstrap_retry);
}
log_zone_notice("%s Bootstrap failed, next attempt in %d seconds.\n",
rq->msg, tmr_s / 1000);
rq->msg, zd->xfr_in.bootstrap_retry / 1000);
}
/* Close socket and free task. */
......
......@@ -45,6 +45,7 @@
#define ZONES_JITTER_PCT 10 /*!< +-N% jitter to timers. */
#define IXFR_DBSYNC_TIMEOUT (60*1000) /*!< Database sync timeout = 60s. */
#define AXFR_BOOTSTRAP_RETRY (30*1000) /*!< Interval between AXFR BS retries. */
#define AXFR_RETRY_MAXTIME (10*60*1000) /*!< Maximum interval 10mins */
enum {
REFRESH_DEFAULT = -1 /* Use time value from zone structure. */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment