Merge branch 'MDL-70568-cron-debugging-patch' of https://github.com/macgirvin/moodle

This commit is contained in:
Jun Pataleta
2022-05-11 10:43:19 +08:00
+21 -1
View File
@@ -236,6 +236,7 @@ function cron_run_adhoc_tasks(int $timenow, $keepalive = 0, $checklimits = true)
*/
function cron_run_inner_scheduled_task(\core\task\task_base $task) {
global $CFG, $DB;
$debuglevel = $CFG->debug;
\core\task\manager::scheduled_task_starting($task);
\core\task\logmanager::start_logging($task);
@@ -250,6 +251,11 @@ function cron_run_inner_scheduled_task(\core\task\task_base $task) {
try {
get_mailer('buffer');
cron_prepare_core_renderer();
// Temporarily increase debug level if task has failed and debugging isn't already at maximum.
if ($debuglevel !== DEBUG_DEVELOPER && $faildelay = $task->get_fail_delay()) {
mtrace('Debugging increased temporarily due to faildelay of ' . $faildelay);
set_debugging(DEBUG_DEVELOPER);
}
$task->execute();
if ($DB->is_transaction_started()) {
throw new coding_exception("Task left transaction open");
@@ -280,6 +286,10 @@ function cron_run_inner_scheduled_task(\core\task\task_base $task) {
}
\core\task\manager::scheduled_task_failed($task);
} finally {
// Reset debugging if it changed.
if ($CFG->debug !== $debuglevel) {
set_debugging($debuglevel);
}
// Reset back to the standard admin user.
cron_setup_user();
cron_set_process_title('Waiting for next scheduled task');
@@ -294,7 +304,8 @@ function cron_run_inner_scheduled_task(\core\task\task_base $task) {
* @param \core\task\adhoc_task $task
*/
function cron_run_inner_adhoc_task(\core\task\adhoc_task $task) {
global $DB, $CFG;
global $CFG, $DB;
$debuglevel = $CFG->debug;
\core\task\manager::adhoc_task_starting($task);
\core\task\logmanager::start_logging($task);
@@ -338,6 +349,11 @@ function cron_run_inner_adhoc_task(\core\task\adhoc_task $task) {
try {
get_mailer('buffer');
cron_prepare_core_renderer();
// Temporarily increase debug level if task has failed and debugging isn't already at maximum.
if ($debuglevel !== DEBUG_DEVELOPER && $faildelay = $task->get_fail_delay()) {
mtrace('Debugging increased temporarily due to faildelay of ' . $faildelay);
set_debugging(DEBUG_DEVELOPER);
}
$task->execute();
if ($DB->is_transaction_started()) {
throw new coding_exception("Task left transaction open");
@@ -368,6 +384,10 @@ function cron_run_inner_adhoc_task(\core\task\adhoc_task $task) {
}
\core\task\manager::adhoc_task_failed($task);
} finally {
// Reset debug level if it changed.
if ($CFG->debug !== $debuglevel) {
set_debugging($debuglevel);
}
// Reset back to the standard admin user.
cron_setup_user();
cron_prepare_core_renderer(true);