=== operating system
iLinux (our own linux company distribution)
gcc 3.4.6
glibc 2.3.6
mysql 5.0.45
openssl 0.9.8g
kernel 2.6.21.3
=== version of Bacula
bacula 2.2.5, compiled and installed from sources
./configure --prefix=/usr/local/bacula-2.2.5
--sbindir=/usr/local/bacula-2.2.5/sbin
--with-scriptdir=/usr/local/bacula-2.2.5/bin
--mandir=/usr/local/bacula-2.2.5/man
--sysconfdir=/usr/local/bacula-2.2.5/etc
--with-working-dir=/usr/local/bacula-2.2.5/var/working
--with-pid-dir=/usr/local/bacula-2.2.5/var/run
--with-subsys-dir=/usr/local/bacula-2.2.5/var/run/subsys
--with-openssl=/usr/local/openssl --with-mysql=/usr/local/mysql
--disable-conio --enable-readline --with-readline=/usr/include/readline
--with-dir-user=bacula --with-dir-group=bacula --with-sd-user=bacula
--with-sd-group=bacula --with-fd-user=root --with-fd-group=root
--enable-ipv6 --enable-bat --with-qwt=/usr/local/qwt
=== description of the problem
when i start at the same time 2 jobs :
- as i use only one "File" storage, the second job waits for the
first to be completed (this is normal)
- on this second job, i have set a "Max Run Time = 2 minutes"
- the first job takes more than 2 minutes (no problem for it,
because i have no "Max Run Time" on it)
- **the problem is** that during the first job is running the
second is canceled for this reason "Fatal error: Max run time exceeded.
Job canceled." whereas it was not running (because waiting for the first
to be completed).
=== explications and workaround
after some C reading, it seems that in the function
job_check_maxruntime in src/dird/job.c the code does not check if the
job is running or not. So as "jcr->start_time" is set when job is
created, then the test
if ((watchdog_time - jcr->start_time) < jcr->job->MaxRunTime) {
Dmsg3(200, "Job %p (%s) with MaxRunTime %d not expired\n",
jcr, jcr->Job, jcr->job->MaxRunTime);
return false;
}
fails whereas the job was not running.
I think about a patch in this function like :
--- src/dird/job.c.orig 2007-11-14 14:45:08.000000000 +0100
+++ src/dird/job.c 2007-11-14 14:46:31.000000000 +0100
@@ -556,7 +556,7 @@
*/
static bool job_check_maxruntime(JCR *control_jcr, JCR *jcr)
{
- if (jcr->job->MaxRunTime == 0 || job_canceled(jcr)) {
+ if (jcr->job->MaxRunTime == 0 || job_canceled(jcr) || jcr->JobStatus
!= JS_Running) {
return false;
}
if ((watchdog_time - jcr->start_time) < jcr->job->MaxRunTime) {
I have see a bug that matches this problem
(http://bugs.bacula.org/view.php?id=621) but it seems to be "resolved"
for a reason that i don't understand whereas the problem still presents.
Do you think it's a bug ?
Would you like me to open this bug and submit the patch in Mantis ?
Best regards,
Alex.
--
Alexandre SIMON
Cellule (R)éseau StanNet/Lothaire
C.I.R.I.L. | Perm. réseau : +33 (0)3.83.68.24.24
Château du Montet | Tél. direct : +33 (0)3.83.68.24.32
Rue du Doyen Roubault | Fax : +33 (0)3.83.68.24.01
F - 54500 VANDOEUVRE | Email : [EMAIL PROTECTED]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Bacula-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bacula-users