]> git.sur5r.net Git - bacula/bacula/commitdiff
Add jcr to timer packets so if killed message can be sent to job.
authorKern Sibbald <kern@sibbald.com>
Wed, 26 Sep 2007 13:34:34 +0000 (13:34 +0000)
committerKern Sibbald <kern@sibbald.com>
Wed, 26 Sep 2007 13:34:34 +0000 (13:34 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@5654 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/filed/backup.c
bacula/src/findlib/create_file.c
bacula/src/lib/bpipe.c
bacula/src/lib/bsock.c
bacula/src/lib/btimers.c
bacula/src/lib/btimers.h
bacula/src/lib/message.c
bacula/src/lib/protos.h
bacula/src/stored/dev.c
bacula/technotes-2.3

index db9193e7161661cc22ff8e24035f96bf2bae9758..f5fbd25ef2188ed00d25d0c56268b614536d7a6d 100644 (file)
@@ -450,7 +450,7 @@ static int save_file(FF_PKT *ff_pkt, void *vjcr, bool top_level)
    if (do_read) {
       btimer_t *tid;
       if (ff_pkt->type == FT_FIFO) {
-         tid = start_thread_timer(pthread_self(), 60);
+         tid = start_thread_timer(jcr, pthread_self(), 60);
       } else {
          tid = NULL;
       }
index cd032b98173326ab3d25df681c0bf94a257e47e3..ea329d8d87b6ad1eda7f918c4efcdb585c5a31e3 100644 (file)
@@ -269,7 +269,7 @@ int create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
             /* Timeout open() in 60 seconds */
             if (attr->type == FT_FIFO) {
                Dmsg0(400, "Set FIFO timer\n");
-               tid = start_thread_timer(pthread_self(), 60);
+               tid = start_thread_timer(jcr, pthread_self(), 60);
             } else {
                tid = NULL;
             }
index d95236d79422497f0ddf1a30d3e99f720096904b..03640a5fb17a375fcd93371f46189859c296fdac 100644 (file)
@@ -163,7 +163,7 @@ BPIPE *open_bpipe(char *prog, int wait, const char *mode)
    bpipe->worker_stime = time(NULL);
    bpipe->wait = wait;
    if (wait > 0) {
-      bpipe->timer_id = start_child_timer(bpipe->worker_pid, wait);
+      bpipe->timer_id = start_child_timer(NULL, bpipe->worker_pid, wait);
    }
    return bpipe;
 }
index 32a163acc896a0bcedfc96d32883520debdbac4b..560d6233c3522d5cc97c33ebaa93ce589dbb0d7f 100644 (file)
@@ -104,7 +104,7 @@ bool BSOCK::connect(JCR * jcr, int retry_interval, utime_t max_retry_time,
 
    /* Try to trap out of OS call when time expires */
    if (max_retry_time) {
-      tid = start_thread_timer(pthread_self(), (uint32_t)max_retry_time);
+      tid = start_thread_timer(jcr, pthread_self(), (uint32_t)max_retry_time);
    }
    
    for (i = 0; !open(jcr, name, host, service, port, heart_beat, &fatal);
index 2e59cf0f7efecbf647a0ac5db8808a0bc36654ec..4c44922f38234ee3feb42573595df4a83e70f5c5 100644 (file)
@@ -53,7 +53,7 @@ static void destructor_child_timer(watchdog_t *self);
  *  Returns: btimer_t *(pointer to btimer_t struct) on success
  *           NULL on failure
  */
-btimer_t *start_child_timer(pid_t pid, uint32_t wait)
+btimer_t *start_child_timer(JCR *jcr, pid_t pid, uint32_t wait)
 {
    btimer_t *wid;
 
@@ -64,6 +64,7 @@ btimer_t *start_child_timer(pid_t pid, uint32_t wait)
    wid->type = TYPE_CHILD;
    wid->pid = pid;
    wid->killed = false;
+   wid->jcr = jcr;
 
    wid->wd->callback = callback_child_timer;
    wid->wd->one_shot = false;
@@ -124,6 +125,7 @@ static void callback_child_timer(watchdog_t *self)
        */
       self->one_shot = true;
    }
+   Jmsg(wid->jcr, M_INFO, 0, _("Child timer expired. Child process killed.\n"));
 }
 
 /*
@@ -132,7 +134,7 @@ static void callback_child_timer(watchdog_t *self)
  *  Returns: btimer_t *(pointer to btimer_t struct) on success
  *           NULL on failure
  */
-btimer_t *start_thread_timer(pthread_t tid, uint32_t wait)
+btimer_t *start_thread_timer(JCR *jcr, pthread_t tid, uint32_t wait)
 {
    btimer_t *wid;
    wid = btimer_start_common(wait);
@@ -142,6 +144,7 @@ btimer_t *start_thread_timer(pthread_t tid, uint32_t wait)
    }
    wid->type = TYPE_PTHREAD;
    wid->tid = tid;
+   wid->jcr = jcr;
 
    wid->wd->callback = callback_thread_timer;
    wid->wd->one_shot = true;
@@ -169,6 +172,7 @@ btimer_t *start_bsock_timer(BSOCK *bsock, uint32_t wait)
    wid->type = TYPE_BSOCK;
    wid->tid = pthread_self();
    wid->bsock = bsock;
+   wid->jcr = bsock->jcr(); 
 
    wid->wd->callback = callback_thread_timer;
    wid->wd->one_shot = true;
@@ -228,6 +232,7 @@ static void callback_thread_timer(watchdog_t *self)
       wid->bsock->set_timed_out();
    }
    pthread_kill(wid->tid, TIMEOUT_SIGNAL);
+   Jmsg(wid->jcr, M_INFO, 0, _("Thread timer expired. Thread interrupted.\n"));
 }
 
 static btimer_t *btimer_start_common(uint32_t wait)
index 33e3ed59947005474938fb7d2db4cf93e70c25d6..7d9eca00cd6ac0a064601918d17c8022f42992c9 100644 (file)
@@ -42,6 +42,7 @@ struct btimer_t {
    pid_t pid;                         /* process id if TYPE_CHILD */
    pthread_t tid;                     /* thread id if TYPE_PTHREAD */
    BSOCK *bsock;                      /* Pointer to BSOCK */
+   JCR *jcr;                          /* Pointer to job control record */
 };
 
 #endif /* __BTIMERS_H_ */
index b231e62298a11e05265883793059472dcf587041..8cccb87339104c318b753925a384e72b5e7ab5e6 100644 (file)
@@ -849,7 +849,7 @@ d_msg(const char *file, int line, int level, const char *fmt,...)
     if (level <= debug_level) {
 #ifdef FULL_LOCATION
        if (details) {
-          len = bsnprintf(buf, sizeof(buf), "%s: %s:%d jid=%u", 
+          len = bsnprintf(buf, sizeof(buf), "%s: %s:%d jid=%u ", 
                 my_name, get_basename(file), line, get_jobid_from_tid());
        } else {
           len = 0;
index c1ed9ead163e4361ffd3c980ab43afd914d989c5..043a40a6b929093e5e2e93ec28c0f99fad75911b 100644 (file)
@@ -1,12 +1,7 @@
-/*
- * Prototypes for lib directory of Bacula
- *
- *   Version $Id$
- */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    Switzerland, email:ftf@fsfeurope.org.
 */
+/*
+ * Prototypes for lib directory of Bacula
+ *
+ *   Version $Id$
+ */
 
 class JCR;
 
@@ -330,9 +330,9 @@ bool register_watchdog(watchdog_t *wd);
 bool unregister_watchdog(watchdog_t *wd);
 
 /* timers.c */
-btimer_t *start_child_timer(pid_t pid, uint32_t wait);
+btimer_t *start_child_timer(JCR *jcr, pid_t pid, uint32_t wait);
 void stop_child_timer(btimer_t *wid);
-btimer_t *start_thread_timer(pthread_t tid, uint32_t wait);
+btimer_t *start_thread_timer(JCR *jcr, pthread_t tid, uint32_t wait);
 void stop_thread_timer(btimer_t *wid);
 btimer_t *start_bsock_timer(BSOCK *bs, uint32_t wait);
 void stop_bsock_timer(btimer_t *wid);
index 6a5eb392eca36ca0f45c4a74accf65fef0f89440..50b4dd4a63116755ffd2312d6d2cba1b261883fd 100644 (file)
@@ -363,7 +363,7 @@ void DEVICE::open_tape_device(DCR *dcr, int omode)
    errno = 0;
    if (is_fifo() && timeout) {
       /* Set open timer */
-      tid = start_thread_timer(pthread_self(), timeout);
+      tid = start_thread_timer(dcr->jcr, pthread_self(), timeout);
    }
    Dmsg2(100, "Try open %s mode=%s\n", print_name(), mode_to_str(omode));
 #if defined(HAVE_WIN32)
index 446df2df6546ee68074fcc8f87812da7dfb302a5..812dc78379c1e266bc6b4b56b16025e7b6f37f77 100644 (file)
@@ -2,6 +2,7 @@
 
 General:
 26Sep07
+kes  Add jcr to timer packets so if killed message can be sent to job.
 kes  Add JobId to all Dmsg() output.
 kes  Put some FD auth code on dbglvl rather than fixed.
 kes  Return insert attributes error message in db msg buffer to avoid