]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix possible heartbeat interval timing problems
authorKern Sibbald <kern@sibbald.com>
Thu, 10 Jul 2014 06:50:34 +0000 (08:50 +0200)
committerKern Sibbald <kern@sibbald.com>
Sat, 12 Jul 2014 14:03:25 +0000 (16:03 +0200)
bacula/src/filed/heartbeat.c

index b83eef9cadea8006e596839ec20b784c2e3cbb36..9795049eab1d6868eb511964d90e677d3423158b 100644 (file)
@@ -109,7 +109,7 @@ void start_heartbeat_monitor(JCR *jcr)
     * it gives a constant stream of TIMEOUT_SIGNAL signals that
     * make debugging impossible.
     */
-   if (!no_signals) {
+   if (!no_signals && (me->heartbeat_interval > 0)) {
       jcr->hb_bsock = NULL;
       jcr->hb_started = false;
       jcr->hb_dir_bsock = NULL;
@@ -182,6 +182,10 @@ extern "C" void *dir_heartbeat_thread(void *arg)
          }
          last_heartbeat = now;
       }
+      /* This should never happen, but it might ... */
+      if (next <= 0) {
+         next = 1;
+      }
       bmicrosleep(next, 0);
    }
    dir->destroy();
@@ -195,7 +199,7 @@ extern "C" void *dir_heartbeat_thread(void *arg)
  */
 void start_dir_heartbeat(JCR *jcr)
 {
-   if (me->heartbeat_interval) {
+   if (!no_signals && (me->heartbeat_interval > 0)) {
       jcr->dir_bsock->set_locking();
       pthread_create(&jcr->heartbeat_id, NULL, dir_heartbeat_thread, (void *)jcr);
    }
@@ -203,7 +207,7 @@ void start_dir_heartbeat(JCR *jcr)
 
 void stop_dir_heartbeat(JCR *jcr)
 {
-   if (me->heartbeat_interval) {
+   if (me->heartbeat_interval > 0) {
       stop_heartbeat_monitor(jcr);
    }
 }