Catch mySqlGoneAway error from originated from MailPoet crons
MAILPOET-6020
This commit is contained in:
committed by
Aschepikov
parent
988dec3e66
commit
81f29a61ac
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Cron\ActionScheduler;
|
||||
|
||||
use MailPoet\Util\Helpers;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class RemoteExecutorHandler {
|
||||
@@ -41,9 +42,17 @@ class RemoteExecutorHandler {
|
||||
}
|
||||
|
||||
public function runActionScheduler(): void {
|
||||
try {
|
||||
$this->wp->addFilter('action_scheduler_queue_runner_concurrent_batches', [$this, 'ensureConcurrency']);
|
||||
\ActionScheduler_QueueRunner::instance()->run();
|
||||
wp_die();
|
||||
} catch (\Exception $e) {
|
||||
$mySqlGoneAwayMessage = Helpers::mySqlGoneAwayExceptionHandler($e);
|
||||
if ($mySqlGoneAwayMessage) {
|
||||
throw new \Exception($mySqlGoneAwayMessage, 0, $e);
|
||||
}
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -4,6 +4,7 @@ namespace MailPoet\Cron;
|
||||
|
||||
use MailPoet\Cron\Triggers\WordPress;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Util\Helpers;
|
||||
|
||||
class CronTrigger {
|
||||
const METHOD_LINUX_CRON = 'Linux Cron';
|
||||
@@ -51,6 +52,7 @@ class CronTrigger {
|
||||
return false;
|
||||
} catch (\Exception $e) {
|
||||
// cron exceptions should not prevent the rest of the site from loading
|
||||
Helpers::mySqlGoneAwayExceptionHandler($e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -4,6 +4,7 @@ namespace MailPoet\Cron;
|
||||
|
||||
use MailPoet\Cron\Workers\WorkersFactory;
|
||||
use MailPoet\Logging\LoggerFactory;
|
||||
use MailPoet\Util\Helpers;
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
|
||||
class Daemon {
|
||||
@@ -61,6 +62,8 @@ class Daemon {
|
||||
$worker->process($this->timer); // BC for workers not implementing CronWorkerInterface
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
Helpers::mySqlGoneAwayExceptionHandler($e);
|
||||
|
||||
$workerClassNameParts = explode('\\', get_class($worker));
|
||||
$workerName = end($workerClassNameParts);
|
||||
$errors[] = [
|
||||
|
@@ -18,6 +18,7 @@ use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||
use MailPoet\Services\Bridge;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Util\Helpers;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
|
||||
@@ -70,6 +71,7 @@ class WordPress {
|
||||
}
|
||||
|
||||
public function run() {
|
||||
try {
|
||||
if (!$this->checkRunInterval()) {
|
||||
return false;
|
||||
}
|
||||
@@ -80,6 +82,13 @@ class WordPress {
|
||||
|
||||
$this->supervisor->init();
|
||||
return $this->supervisor->checkDaemon();
|
||||
} catch (\Exception $e) {
|
||||
$mySqlGoneAwayMessage = Helpers::mySqlGoneAwayExceptionHandler($e);
|
||||
if ($mySqlGoneAwayMessage) {
|
||||
throw new \Exception($mySqlGoneAwayMessage, 0, $e);
|
||||
}
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
private function checkRunInterval(): bool {
|
||||
|
Reference in New Issue
Block a user