resolver will always attempt to contact upstreams
known to be bad if it's not busy.
this fixes a problem on low-volume resolvers
where a short connection outage could make
resolvers deny resolving queries even after the
connection is restored
#ifndef RECVMMSG_BATCH
#define RECVMMSG_BATCH 4
#endif
+#ifndef QUERY_RATE_THRESHOLD
+#define QUERY_RATE_THRESHOLD (2 * MP_FREELIST_SIZE) /**< Nr of parallel queries considered as high rate */
+#endif
/*
* @internal These are forward decls to allow building modules with engine but without Lua.
kr_resolve_begin(&task->req, &engine->resolver, answer);
worker->stats.concurrent += 1;
worker->stats.queries += 1;
+ /* Throttle outbound queries only when high pressure */
+ if (worker->stats.concurrent < QUERY_RATE_THRESHOLD) {
+ task->req.options |= QUERY_NO_THROTTLE;
+ }
return task;
}