Lines 481-487
Link Here
|
481 |
static bool job_check_maxwaittime(JCR *control_jcr, JCR *jcr) |
481 |
static bool job_check_maxwaittime(JCR *control_jcr, JCR *jcr) |
482 |
{ |
482 |
{ |
483 |
bool cancel = false; |
483 |
bool cancel = false; |
484 |
bool ok_to_cancel = false; |
|
|
485 |
JOB *job = jcr->job; |
484 |
JOB *job = jcr->job; |
486 |
|
485 |
|
487 |
if (job_canceled(jcr)) { |
486 |
if (job_canceled(jcr)) { |
Lines 493-561
Link Here
|
493 |
} |
492 |
} |
494 |
if (jcr->JobLevel == L_FULL && job->FullMaxWaitTime != 0 && |
493 |
if (jcr->JobLevel == L_FULL && job->FullMaxWaitTime != 0 && |
495 |
(watchdog_time - jcr->start_time) >= job->FullMaxWaitTime) { |
494 |
(watchdog_time - jcr->start_time) >= job->FullMaxWaitTime) { |
496 |
ok_to_cancel = true; |
495 |
cancel = true; |
497 |
} else if (jcr->JobLevel == L_DIFFERENTIAL && job->DiffMaxWaitTime != 0 && |
496 |
} else if (jcr->JobLevel == L_DIFFERENTIAL && job->DiffMaxWaitTime != 0 && |
498 |
(watchdog_time - jcr->start_time) >= job->DiffMaxWaitTime) { |
497 |
(watchdog_time - jcr->start_time) >= job->DiffMaxWaitTime) { |
499 |
ok_to_cancel = true; |
498 |
cancel = true; |
500 |
} else if (jcr->JobLevel == L_INCREMENTAL && job->IncMaxWaitTime != 0 && |
499 |
} else if (jcr->JobLevel == L_INCREMENTAL && job->IncMaxWaitTime != 0 && |
501 |
(watchdog_time - jcr->start_time) >= job->IncMaxWaitTime) { |
500 |
(watchdog_time - jcr->start_time) >= job->IncMaxWaitTime) { |
502 |
ok_to_cancel = true; |
501 |
cancel = true; |
503 |
} else if (job->MaxWaitTime != 0 && |
502 |
} else if (job->MaxWaitTime != 0 && |
504 |
(watchdog_time - jcr->start_time) >= job->MaxWaitTime) { |
503 |
(watchdog_time - jcr->start_time) >= job->MaxWaitTime) { |
505 |
ok_to_cancel = true; |
|
|
506 |
} |
507 |
if (!ok_to_cancel) { |
508 |
return false; |
509 |
} |
510 |
|
511 |
/* |
512 |
* I don't see the need for all this -- kes 17Dec06 |
513 |
*/ |
514 |
#ifdef xxx |
515 |
Dmsg3(800, "Job %d (%s): MaxWaitTime of %d seconds exceeded, " |
516 |
"checking status\n", |
517 |
jcr->JobId, jcr->Job, job->MaxWaitTime); |
518 |
switch (jcr->JobStatus) { |
519 |
case JS_Created: |
520 |
case JS_Blocked: |
521 |
case JS_WaitFD: |
522 |
case JS_WaitSD: |
523 |
case JS_WaitStoreRes: |
524 |
case JS_WaitClientRes: |
525 |
case JS_WaitJobRes: |
526 |
case JS_WaitPriority: |
527 |
case JS_WaitMaxJobs: |
528 |
case JS_WaitStartTime: |
529 |
cancel = true; |
504 |
cancel = true; |
530 |
Dmsg0(200, "JCR blocked in #1\n"); |
|
|
531 |
break; |
532 |
case JS_Running: |
533 |
Dmsg0(800, "JCR running, checking SD status\n"); |
534 |
switch (jcr->SDJobStatus) { |
535 |
case JS_WaitMount: |
536 |
case JS_WaitMedia: |
537 |
case JS_WaitFD: |
538 |
cancel = true; |
539 |
Dmsg0(800, "JCR blocked in #2\n"); |
540 |
break; |
541 |
default: |
542 |
Dmsg0(800, "JCR not blocked in #2\n"); |
543 |
break; |
544 |
} |
545 |
break; |
546 |
case JS_Terminated: |
547 |
case JS_ErrorTerminated: |
548 |
case JS_Canceled: |
549 |
case JS_FatalError: |
550 |
Dmsg0(800, "JCR already dead in #3\n"); |
551 |
break; |
552 |
default: |
553 |
Jmsg1(jcr, M_ERROR, 0, _("Unhandled job status code %d\n"), |
554 |
jcr->JobStatus); |
555 |
} |
505 |
} |
556 |
Dmsg3(800, "MaxWaitTime result: %scancel JCR %p (%s)\n", |
506 |
|
557 |
cancel ? "" : "do not ", jcr, jcr->Job); |
|
|
558 |
#endif |
559 |
return cancel; |
507 |
return cancel; |
560 |
} |
508 |
} |
561 |
|
509 |
|
Lines 574-609
Link Here
|
574 |
return false; |
522 |
return false; |
575 |
} |
523 |
} |
576 |
|
524 |
|
577 |
#ifdef xxx |
|
|
578 |
switch (jcr->JobStatus) { |
579 |
case JS_Created: |
580 |
case JS_Running: |
581 |
case JS_Blocked: |
582 |
case JS_WaitFD: |
583 |
case JS_WaitSD: |
584 |
case JS_WaitStoreRes: |
585 |
case JS_WaitClientRes: |
586 |
case JS_WaitJobRes: |
587 |
case JS_WaitPriority: |
588 |
case JS_WaitMaxJobs: |
589 |
case JS_WaitStartTime: |
590 |
case JS_Differences: |
591 |
cancel = true; |
592 |
break; |
593 |
case JS_Terminated: |
594 |
case JS_ErrorTerminated: |
595 |
case JS_Canceled: |
596 |
case JS_FatalError: |
597 |
cancel = false; |
598 |
break; |
599 |
default: |
600 |
Jmsg1(jcr, M_ERROR, 0, _("Unhandled job status code %d\n"), |
601 |
jcr->JobStatus); |
602 |
} |
603 |
|
604 |
Dmsg3(200, "MaxRunTime result: %scancel JCR %p (%s)\n", |
605 |
cancel ? "" : "do not ", jcr, jcr->Job); |
606 |
#endif |
607 |
return true; |
525 |
return true; |
608 |
} |
526 |
} |
609 |
|
527 |
|