]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
From review feedback: only inc s_almost_expired_tasks_run after task has ended withou... 10598/head
authorOtto <otto.moerbeek@open-xchange.com>
Tue, 17 Aug 2021 10:23:40 +0000 (12:23 +0200)
committerOtto <otto.moerbeek@open-xchange.com>
Tue, 17 Aug 2021 10:23:40 +0000 (12:23 +0200)
and check for nullptr function in task record.

pdns/recursordist/rec-taskqueue.cc
pdns/recursordist/taskqueue.cc
pdns/ws-recursor.cc

index 9bd0cd6c3b304cff80624b3e99844ac4aa052aac..2705c59b854dfa941d3b590f291da37fdea33776 100644 (file)
@@ -32,7 +32,6 @@ static pdns::stat_t s_almost_expired_tasks_exceptions;
 
 static void resolve(const struct timeval& now, bool logErrors, const pdns::ResolveTask& task)
 {
-  ++s_almost_expired_tasks_run;
   const string msg = "Exception while running a background ResolveTask";
   SyncRes sr(now);
   vector<DNSRecord> ret;
@@ -40,6 +39,7 @@ static void resolve(const struct timeval& now, bool logErrors, const pdns::Resol
   try {
     g_log << Logger::Debug << "TaskQueue: resolving " << task.d_qname.toString() << '|' << QType(task.d_qtype).toString() << endl;
     int res = sr.beginResolve(task.d_qname, QType(task.d_qtype), QClass::IN, ret);
+    ++s_almost_expired_tasks_run;
     g_log << Logger::Debug << "TaskQueue: DONE resolving " << task.d_qname.toString() << '|' << QType(task.d_qtype).toString() << ": " << res << endl;
   }
   catch (const std::exception& e) {
index c1aa80c38f1e8fc60419ee353d6943edda32cc94..11be99ef20db42b4deae090566f0f64d14324b57 100644 (file)
@@ -61,8 +61,12 @@ bool TaskQueue::runOnce(bool logErrors)
     return false;
   }
   ResolveTask task = pop();
+  if (task.func == nullptr) {
+    g_log << Logger::Debug << "TaskQueue: null task for " << task.d_qname.toString() << '|' << QType(task.d_qtype).toString() << endl;
+    return true;
+  }
   struct timeval now;
-  gettimeofday(&now, 0);
+  Utility::gettimeofday(&now);
   if (task.d_deadline >= now.tv_sec) {
     task.func(now, logErrors, task);
   }
index 44e768b532b84f481e0cc3688ccc54baa7bb0750..181a0f318ebcbd2cc306fe8fc6b84127b9908af9 100644 (file)
@@ -1057,7 +1057,7 @@ const std::map<std::string, MetricDefinition> MetricDefinitionStorage::metrics =
 
   { "almost-expired-run",
     MetricDefinition(PrometheusMetricType::counter,
-                     "number of almost-expired tasks run")},
+                     "number of almost-expired tasks run to completion")},
 
   { "almost-expired-exceptions",
     MetricDefinition(PrometheusMetricType::counter,