]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
refresh: if refresh fails, log the time of the next retry attempt
authorDavid Vašek <david.vasek@nic.cz>
Mon, 31 Oct 2022 15:01:41 +0000 (16:01 +0100)
committerDavid Vašek <david.vasek@nic.cz>
Mon, 31 Oct 2022 23:09:20 +0000 (00:09 +0100)
src/knot/events/handlers/refresh.c

index 7754491e88b1f43b777fe13c60fa56d6f905daec..c5d9982b8213384bd103611d63e500b4ad9242d2 100644 (file)
@@ -1358,8 +1358,6 @@ int event_refresh(conf_t *conf, zone_t *zone)
        int ret = zone_master_try(conf, zone, try_refresh, &trctx, "refresh");
        zone_clear_preferred_master(zone);
        if (ret != KNOT_EOK) {
-               log_zone_error(zone->name, "refresh, failed (%s)", knot_strerror(ret));
-
                const knot_rdataset_t *soa = zone_soa(zone);
                uint32_t next;
 
@@ -1373,6 +1371,14 @@ int event_refresh(conf_t *conf, zone_t *zone)
                            C_RETRY_MIN_INTERVAL, C_RETRY_MAX_INTERVAL);
                zone->timers.next_refresh = time(NULL) + next;
                zone->timers.last_refresh_ok = false;
+
+               char time_str[64] = { 0 };
+               struct tm time_gm = { 0 };
+               localtime_r(&zone->timers.next_refresh, &time_gm);
+               strftime(time_str, sizeof(time_str), KNOT_LOG_TIME_FORMAT, &time_gm);
+
+               log_zone_error(zone->name, "refresh, failed (%s), next retry at %s",
+                              knot_strerror(ret), time_str);
        }
 
        /* Reschedule events. */