]> git.sur5r.net Git - bacula/bacula/blob - bacula/patches/2.0.3-maxwaittime.patch
Adjust for qwt in depkgs.
[bacula/bacula] / bacula / patches / 2.0.3-maxwaittime.patch
1
2 This patch should fix the logic error in checking for the MaxWaitTime of
3 a job in src/dird/job.c.  It fixes bug #802.
4
5 Apply it to Bacula version 2.0.3 with:
6
7   cd <bacula-source>
8   patch -p0 <2.0.3-maxwaittime.patch
9   make
10   ...
11   make install
12
13
14
15 Index: src/dird/job.c
16 ===================================================================
17 --- src/dird/job.c      (revision 4349)
18 +++ src/dird/job.c      (working copy)
19 @@ -481,7 +481,6 @@
20  static bool job_check_maxwaittime(JCR *control_jcr, JCR *jcr)
21  {
22     bool cancel = false;
23 -   bool ok_to_cancel = false;
24     JOB *job = jcr->job;
25  
26     if (job_canceled(jcr)) {
27 @@ -493,69 +492,18 @@
28     } 
29     if (jcr->JobLevel == L_FULL && job->FullMaxWaitTime != 0 &&
30           (watchdog_time - jcr->start_time) >= job->FullMaxWaitTime) {
31 -      ok_to_cancel = true;
32 +      cancel = true;
33     } else if (jcr->JobLevel == L_DIFFERENTIAL && job->DiffMaxWaitTime != 0 &&
34           (watchdog_time - jcr->start_time) >= job->DiffMaxWaitTime) {
35 -      ok_to_cancel = true;
36 +      cancel = true;
37     } else if (jcr->JobLevel == L_INCREMENTAL && job->IncMaxWaitTime != 0 &&
38           (watchdog_time - jcr->start_time) >= job->IncMaxWaitTime) {
39 -      ok_to_cancel = true;
40 +      cancel = true;
41     } else if (job->MaxWaitTime != 0 &&
42           (watchdog_time - jcr->start_time) >= job->MaxWaitTime) {
43 -      ok_to_cancel = true;
44 -   }
45 -   if (!ok_to_cancel) {
46 -      return false;
47 -   }
48 -
49 -/*
50 - * I don't see the need for all this -- kes 17Dec06
51 - */
52 -#ifdef xxx
53 -   Dmsg3(800, "Job %d (%s): MaxWaitTime of %d seconds exceeded, "
54 -         "checking status\n",
55 -         jcr->JobId, jcr->Job, job->MaxWaitTime);
56 -   switch (jcr->JobStatus) {
57 -   case JS_Created:
58 -   case JS_Blocked:
59 -   case JS_WaitFD:
60 -   case JS_WaitSD:
61 -   case JS_WaitStoreRes:
62 -   case JS_WaitClientRes:
63 -   case JS_WaitJobRes:
64 -   case JS_WaitPriority:
65 -   case JS_WaitMaxJobs:
66 -   case JS_WaitStartTime:
67        cancel = true;
68 -      Dmsg0(200, "JCR blocked in #1\n");
69 -      break;
70 -   case JS_Running:
71 -      Dmsg0(800, "JCR running, checking SD status\n");
72 -      switch (jcr->SDJobStatus) {
73 -      case JS_WaitMount:
74 -      case JS_WaitMedia:
75 -      case JS_WaitFD:
76 -         cancel = true;
77 -         Dmsg0(800, "JCR blocked in #2\n");
78 -         break;
79 -      default:
80 -         Dmsg0(800, "JCR not blocked in #2\n");
81 -         break;
82 -      }
83 -      break;
84 -   case JS_Terminated:
85 -   case JS_ErrorTerminated:
86 -   case JS_Canceled:
87 -   case JS_FatalError:
88 -      Dmsg0(800, "JCR already dead in #3\n");
89 -      break;
90 -   default:
91 -      Jmsg1(jcr, M_ERROR, 0, _("Unhandled job status code %d\n"),
92 -            jcr->JobStatus);
93     }
94 -   Dmsg3(800, "MaxWaitTime result: %scancel JCR %p (%s)\n",
95 -         cancel ? "" : "do not ", jcr, jcr->Job);
96 -#endif
97 +
98     return cancel;
99  }
100  
101 @@ -574,36 +522,6 @@
102        return false;
103     }
104  
105 -#ifdef xxx
106 -   switch (jcr->JobStatus) {
107 -   case JS_Created:
108 -   case JS_Running:
109 -   case JS_Blocked:
110 -   case JS_WaitFD:
111 -   case JS_WaitSD:
112 -   case JS_WaitStoreRes:
113 -   case JS_WaitClientRes:
114 -   case JS_WaitJobRes:
115 -   case JS_WaitPriority:
116 -   case JS_WaitMaxJobs:
117 -   case JS_WaitStartTime:
118 -   case JS_Differences:
119 -      cancel = true;
120 -      break;
121 -   case JS_Terminated:
122 -   case JS_ErrorTerminated:
123 -   case JS_Canceled:
124 -   case JS_FatalError:
125 -      cancel = false;
126 -      break;
127 -   default:
128 -      Jmsg1(jcr, M_ERROR, 0, _("Unhandled job status code %d\n"),
129 -            jcr->JobStatus);
130 -   }
131 -
132 -   Dmsg3(200, "MaxRunTime result: %scancel JCR %p (%s)\n",
133 -         cancel ? "" : "do not ", jcr, jcr->Job);
134 -#endif
135     return true;
136  }
137