From d12e2e592a605c191e4b8df949cb883e5bac15d2 Mon Sep 17 00:00:00 2001 From: odain Date: Fri, 21 Aug 2020 10:25:05 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B03265=20-=20Log=20stacktrace=20when=20cro?= =?UTF-8?q?n=20exception=20raised=20with=20debug=20enabled?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/backgroundtask.class.inc.php | 18 ++++++++++++++++++ webservices/cron.php | 24 +++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/core/backgroundtask.class.inc.php b/core/backgroundtask.class.inc.php index db93f1310..6ab6b7a11 100644 --- a/core/backgroundtask.class.inc.php +++ b/core/backgroundtask.class.inc.php @@ -26,6 +26,24 @@ */ class BackgroundTask extends DBObject { + protected $bDebug = false; + + /** + * @return bool + */ + public function IsDebug(): bool + { + return $this->bDebug; + } + + /** + * @param bool $bDebug + */ + public function SetDebug(bool $bDebug): void + { + $this->bDebug = $bDebug; + } + public static function Init() { $aParams = array diff --git a/webservices/cron.php b/webservices/cron.php index 6b8ed2e51..87f2eef68 100644 --- a/webservices/cron.php +++ b/webservices/cron.php @@ -112,7 +112,14 @@ function RunTask($oProcess, BackgroundTask $oTask, $oStartDate, $iTimeLimit) } catch (Exception $e) // we shouldn't get so much exceptions... but we need to handle legacy code, and cron.php has to keep running { - $sMessage = 'Processing failed with message: '.$e->getMessage(); + if ($oTask->IsDebug()) + { + $sMessage = 'Processing failed with message: '.$e->getTraceAsString(); + } + else + { + $sMessage = 'Processing failed with message: '.$e->getMessage(); + } } $fDuration = microtime(true) - $fStart; if ($oTask->Get('total_exec_count') == 0) @@ -164,8 +171,18 @@ function RunTask($oProcess, BackgroundTask $oTask, $oStartDate, $iTimeLimit) * @param CLIPage|WebPage $oP * @param iProcess[] $aProcesses * @param boolean $bVerbose + * @param bool $bDebug + * + * @throws \ArchivedObjectException + * @throws \CoreCannotSaveObjectException + * @throws \CoreException + * @throws \CoreUnexpectedValue + * @throws \CoreWarning + * @throws \MySQLException + * @throws \OQLException + * @throws \ReflectionException */ -function CronExec($oP, $aProcesses, $bVerbose) +function CronExec($oP, $aProcesses, $bVerbose, $bDebug=false) { $iStarted = time(); $iMaxDuration = MetaModel::GetConfig()->Get('cron_max_execution_time'); @@ -256,6 +273,7 @@ function CronExec($oP, $aProcesses, $bVerbose) { // New entry, let's create a new BackgroundTask record, and plan the first execution $oTask = new BackgroundTask(); + $oTask->SetDebug($bDebug); $oTask->Set('class_name', get_class($oProcess)); $oTask->Set('total_exec_count', 0); $oTask->Set('min_run_duration', 99999.999); @@ -591,7 +609,7 @@ try { if ($oMutex->TryLock()) { - CronExec($oP, $aProcesses, $bVerbose); + CronExec($oP, $aProcesses, $bVerbose, $bDebug); } else {