Open dmitrii-fediuk opened 4 years ago
SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction, query was: DELETE FROM `cron_schedule` WHERE (status = 'missed') AND (job_code in ('scconnector_verify_website', 'scconnector_retrieve_gtag')) AND (created_at < '2020-04-07 06:58:03')
************************************
Location: vendor/magento/framework/DB/Statement/Pdo/Mysql.php:91
Callee: PDOStatement::execute
Context:
}
}
if ($specialExecute) {
return $this->_executeWithBinding($params);
} else {
return $this->tryExecute(function () use ($params) {
return $params !== null ? $this->_stmt->execute($params) : $this->_stmt->execute();
});
}
}
/**
* Executes query and avoid warnings.
*
* @param callable $callback
*****************1******************
Location: vendor/magento/framework/DB/Statement/Pdo/Mysql.php:107
Callee: Magento\Framework\DB\Statement\Pdo\Mysql::Magento\Framework\DB\Statement\Pdo\{closure}
Context:
private function tryExecute($callback)
{
$previousLevel = error_reporting(\E_ERROR); // disable warnings for PDO bugs #63812, #74401
try {
return $callback();
} catch (\PDOException $e) {
$message = sprintf('%s, query was: %s', $e->getMessage(), $this->_stmt->queryString);
throw new \Zend_Db_Statement_Exception($message, (int)$e->getCode(), $e);
} finally {
error_reporting($previousLevel);
}
}
*****************2******************
Location: vendor/magento/framework/DB/Statement/Pdo/Mysql.php:92
Callee: Magento\Framework\DB\Statement\Pdo\Mysql::tryExecute
Context:
}
if ($specialExecute) {
return $this->_executeWithBinding($params);
} else {
return $this->tryExecute(function () use ($params) {
return $params !== null ? $this->_stmt->execute($params) : $this->_stmt->execute();
});
}
}
*****************3******************
Location: vendor/magento/zendframework1/library/Zend/Db/Statement.php:303
Callee: Magento\Framework\DB\Statement\Pdo\Mysql::_execute
Context:
public function execute(array $params = null)
{
/*
* Simple case - no query profiler to manage.
*/
if ($this->_queryId === null) {
return $this->_execute($params);
}
/*
* Do the same thing, but with query profiler
* management before and after the execute.
*/
$prof = $this->_adapter->getProfiler();
$qp = $prof->getQueryProfile($this->_queryId);
*****************4******************
Location: vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php:480
Callee: Zend_Db_Statement::execute
Context:
// because $bind may be a Zend_Db_Expr object
if (!is_array($bind)) {
$bind = array($bind);
}
// prepare and execute the statement with profiling
$stmt = $this->prepare($sql);
$stmt->execute($bind);
// return the results embedded in the prepared statement object
$stmt->setFetchMode($this->_fetchMode);
return $stmt;
}
*****************5******************
Location: vendor/magento/zendframework1/library/Zend/Db/Adapter/Pdo/Abstract.php:238
Callee: Zend_Db_Adapter_Abstract::query
Context:
unset($bind[$name]);
$bind[$newName] = $value;
}
}
}
try {
return parent::query($sql, $bind);
} catch (PDOException $e) {
/**
* @see Zend_Db_Statement_Exception
*/
#require_once 'Zend/Db/Statement/Exception.php';
throw new Zend_Db_Statement_Exception($e->getMessage(), $e->getCode(), $e);
}
}
*****************6******************
Location: vendor/magento/framework/DB/Adapter/Pdo/Mysql.php:546
Callee: Zend_Db_Adapter_Pdo_Abstract::query
Context:
$triesCount = 0;
do {
$retry = false;
$this->logger->startTimer();
try {
$this->_checkDdlTransaction($sql);
$this->_prepareQuery($sql, $bind);
$result = parent::query($sql, $bind);
$this->logger->logStats(LoggerInterface::TYPE_QUERY, $sql, $bind, $result);
return $result;
} catch (\Exception $e) {
// Finalize broken query
$profiler = $this->getProfiler();
if ($profiler instanceof Profiler) {
/** @var Profiler $profiler */
$profiler->queryEndLast();
*****************7******************
Location: vendor/magento/framework/DB/Adapter/Pdo/Mysql.php:613
Callee: Magento\Framework\DB\Adapter\Pdo\Mysql::_query
Context:
public function query($sql, $bind = [])
{
if (strpos(rtrim($sql, " \t
\r\0;"), ';') !== false && count($this->_splitMultiQuery($sql)) > 1) {
throw new \Magento\Framework\Exception\LocalizedException(
new Phrase("Multiple queries can't be executed. Run a single query and try again.")
);
}
return $this->_query($sql, $bind);
}
*****************8******************
Location: vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php:664
Callee: Magento\Framework\DB\Adapter\Pdo\Mysql::query
Context:
$sql = "DELETE FROM "
. $this->quoteIdentifier($table, true)
. (($where) ? " WHERE $where" : '');
/**
* Execute the statement and return the number of affected rows
*/
$stmt = $this->query($sql);
$result = $stmt->rowCount();
return $result;
}
*****************9******************
Location: vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:543
Callee: Zend_Db_Adapter_Abstract::delete
Context:
$count = 0;
foreach ($historyLifetimes as $status => $time) {
$count += $connection->delete(
$scheduleResource->getMainTable(),
[
'status = ?' => $status,
'job_code in (?)' => array_keys($jobs),
'created_at < ?' => $connection->formatDate($currentTime - $time)
]
);
}
if ($count) {
$this->logger->info(sprintf('%d cron jobs were cleaned', $count));
}
}
*****************10*****************
Location: vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:239
Callee: Magento\Cron\Observer\ProcessCronQueueObserver::cleanupJobs
Context:
);
continue;
}
$this->lockGroup(
$groupId,
function ($groupId) use ($currentTime, $jobsRoot) {
$this->cleanupJobs($groupId, $currentTime);
$this->generateSchedules($groupId);
$this->processPendingJobs($groupId, $jobsRoot, $currentTime);
}
);
}
}
/**
*****************11*****************
Location: vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:269
Callee: Magento\Cron\Observer\ProcessCronQueueObserver::Magento\Cron\Observer\{closure}
Context:
"Could not acquire lock for cron group: %s, skipping run",
$groupId
)
);
return;
}
try {
$callback($groupId);
} finally {
$this->lockManager->unlock(self::LOCK_PREFIX . $groupId);
}
}
*****************12*****************
Location: vendor/magento/module-cron/Observer/ProcessCronQueueObserver.php:242
Callee: Magento\Cron\Observer\ProcessCronQueueObserver::lockGroup
Context:
$this->lockGroup(
$groupId,
function ($groupId) use ($currentTime, $jobsRoot) {
$this->cleanupJobs($groupId, $currentTime);
$this->generateSchedules($groupId);
$this->processPendingJobs($groupId, $jobsRoot, $currentTime);
}
);
}
}
*****************13*****************
Location: vendor/magento/framework/Event/Invoker/InvokerDefault.php:88
Callee: Magento\Cron\Observer\ProcessCronQueueObserver::execute
Context:
protected function _callObserverMethod($object, $observer)
{
if ($object instanceof \Magento\Framework\Event\ObserverInterface) {
$object->execute($observer);
} elseif ($this->_appState->getMode() == State::MODE_DEVELOPER) {
throw new \LogicException(
sprintf(
'Observer "%s" must implement interface "%s"',
get_class($object),
\Magento\Framework\Event\ObserverInterface::class
)
);
*****************14*****************
Location: vendor/magento/framework/Event/Invoker/InvokerDefault.php:74
Callee: Magento\Framework\Event\Invoker\InvokerDefault::_callObserverMethod
Context:
}
if (isset($configuration['shared']) && false === $configuration['shared']) {
$object = $this->_observerFactory->create($configuration['instance']);
} else {
$object = $this->_observerFactory->get($configuration['instance']);
}
$this->_callObserverMethod($object, $observer);
}
*****************15*****************
Location: vendor/magento/framework/Event/Manager.php:66
Callee: Magento\Framework\Event\Invoker\InvokerDefault::dispatch
Context:
$event = new \Magento\Framework\Event($data);
$event->setName($eventName);
$wrapper = new Observer();
$wrapper->setData(array_merge(['event' => $event], $data));
\Magento\Framework\Profiler::start('OBSERVER:' . $observerConfig['name']);
$this->_invoker->dispatch($observerConfig, $wrapper);
\Magento\Framework\Profiler::stop('OBSERVER:' . $observerConfig['name']);
}
\Magento\Framework\Profiler::stop('EVENT:' . $eventName);
}
*****************16*****************
Location: generated/code/Magento/Framework/Event/Manager/Proxy.php:95
Callee: Magento\Framework\Event\Manager::dispatch
Context:
public function dispatch($eventName, array $data = [])
{
return $this->_getSubject()->dispatch($eventName, $data);
}
*****************17*****************
Location: vendor/magento/framework/App/Cron.php:86
Callee: Magento\Framework\Event\Manager\Proxy::dispatch
Context:
$configLoader = $this->objectManager->get(\Magento\Framework\ObjectManager\ConfigLoaderInterface::class);
$this->objectManager->configure($configLoader->load(Area::AREA_CRONTAB));
$this->areaList->getArea(Area::AREA_CRONTAB)->load(Area::PART_TRANSLATE);
/** @var \Magento\Framework\Event\ManagerInterface $eventManager */
$eventManager = $this->objectManager->get(\Magento\Framework\Event\ManagerInterface::class);
$eventManager->dispatch('default');
$this->_response->setCode(0);
return $this->_response;
}
*****************18*****************
Location: vendor/magento/module-cron/Console/Command/CronCommand.php:117
Callee: Magento\Framework\App\Cron::launch
Context:
$bootstrapOptionValue = $bootstrapOptionValues[ProcessCronQueueObserver::STANDALONE_PROCESS_STARTED];
if ($bootstrapOptionValue) {
$params[ProcessCronQueueObserver::STANDALONE_PROCESS_STARTED] = $bootstrapOptionValue;
}
}
/** @var \Magento\Framework\App\Cron $cronObserver */
$cronObserver = $objectManager->create(\Magento\Framework\App\Cron::class, ['parameters' => $params]);
$cronObserver->launch();
$output->writeln('<info>' . 'Ran jobs by schedule.' . '</info>');
}
*****************19*****************
Location: vendor/symfony/console/Command/Command.php:255
Callee: Magento\Cron\Console\Command\CronCommand::execute
Context:
}
$input->validate();
if ($this->code) {
$statusCode = ($this->code)($input, $output);
} else {
$statusCode = $this->execute($input, $output);
}
return is_numeric($statusCode) ? (int) $statusCode : 0;
}
*****************20*****************
Location: vendor/magento/framework/Interception/Interceptor.php:58
Callee: Symfony\Component\Console\Command\Command::run
Context:
public function ___callParent($method, array $arguments)
{
return parent::$method(...array_values($arguments));
}
*****************21*****************
Location: vendor/magento/framework/Interception/Interceptor.php:138
Callee: Magento\Cron\Console\Command\CronCommand::___callParent
Context:
$code = $currentPluginInfo[DefinitionInterface::LISTENER_AROUND];
$pluginInfo = $pluginList->getNext($type, $method, $code);
$pluginInstance = $pluginList->getPlugin($type, $code);
$pluginMethod = 'around' . $capMethod;
$result = $pluginInstance->$pluginMethod($subject, $next, ...array_values($arguments));
} else {
// Call original method
$result = $subject->___callParent($method, $arguments);
}
if (isset($currentPluginInfo[DefinitionInterface::LISTENER_AFTER])) {
// Call 'after' listeners
foreach ($currentPluginInfo[DefinitionInterface::LISTENER_AFTER] as $code) {
$pluginInstance = $pluginList->getPlugin($type, $code);
$pluginMethod = 'after' . $capMethod;
$result = $pluginInstance->$pluginMethod($subject, $result, ...array_values($arguments));
*****************22*****************
Location: vendor/mage2pro/core/Cron/Plugin/Console/Command/CronCommand.php:24
Callee: Magento\Cron\Console\Command\CronCommand::Magento\Framework\Interception\{closure}
Context:
function aroundRun(Sb $sb, \Closure $f, II $i, IO $o) {
try {return $f($i, $o);}
catch (\Exception $e) {
df_log_e($e, $this);
throw $e;
}
}
*****************23*****************
Location: vendor/magento/framework/Interception/Interceptor.php:135
Callee: Df\Cron\Plugin\Console\Command\CronCommand::aroundRun
Context:
if (isset($currentPluginInfo[DefinitionInterface::LISTENER_AROUND])) {
// Call 'around' listener
$code = $currentPluginInfo[DefinitionInterface::LISTENER_AROUND];
$pluginInfo = $pluginList->getNext($type, $method, $code);
$pluginInstance = $pluginList->getPlugin($type, $code);
$pluginMethod = 'around' . $capMethod;
$result = $pluginInstance->$pluginMethod($subject, $next, ...array_values($arguments));
} else {
// Call original method
$result = $subject->___callParent($method, $arguments);
}
if (isset($currentPluginInfo[DefinitionInterface::LISTENER_AFTER])) {
// Call 'after' listeners
foreach ($currentPluginInfo[DefinitionInterface::LISTENER_AFTER] as $code) {
*****************24*****************
Location: vendor/magento/framework/Interception/Interceptor.php:153
Callee: Magento\Cron\Console\Command\CronCommand::Magento\Framework\Interception\{closure}
Context:
$result = $pluginInstance->$pluginMethod($subject, $result, ...array_values($arguments));
}
}
return $result;
};
$result = $next(...array_values($arguments));
$next = null;
return $result;
}
*****************25*****************
Location: generated/code/Magento/Cron/Console/Command/CronCommand/Interceptor.php:26
Callee: Magento\Cron\Console\Command\CronCommand::___callPlugins
Context:
public function run(\Symfony\Component\Console\Input\InputInterface $input, \Symfony\Component\Console\Output\OutputInterface $output)
{
$pluginInfo = $this->pluginList->getNext($this->subjectType, 'run');
if (!$pluginInfo) {
return parent::run($input, $output);
} else {
return $this->___callPlugins('run', func_get_args(), $pluginInfo);
}
}
*****************26*****************
Location: vendor/symfony/console/Application.php:893
Callee: Magento\Cron\Console\Command\CronCommand::run
Context:
foreach ($command->getHelperSet() as $helper) {
if ($helper instanceof InputAwareInterface) {
$helper->setInput($input);
}
}
if (null === $this->dispatcher) {
return $command->run($input, $output);
}
// bind before the console.command event, so the listeners have access to input options/arguments
try {
$command->mergeApplicationDefinition();
$input->bind($command->getDefinition());
} catch (ExceptionInterface $e) {
// ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition
*****************27*****************
Location: vendor/symfony/console/Application.php:262
Callee: Symfony\Component\Console\Application::doRunCommand
Context:
return 1;
}
$command = $this->find($alternative);
}
$this->runningCommand = $command;
$exitCode = $this->doRunCommand($command, $input, $output);
$this->runningCommand = null;
return $exitCode;
}
*****************28*****************
Location: vendor/magento/framework/Console/Cli.php:115
Callee: Symfony\Component\Console\Application::doRun
Context:
public function doRun(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
{
$exitCode = null;
try {
$exitCode = parent::doRun($input, $output);
} catch (\Exception $e) {
$errorMessage = $e->getMessage() . PHP_EOL . $e->getTraceAsString();
$this->logger->error($errorMessage);
$this->initException = $e;
}
if ($this->initException) {
throw $this->initException;
*****************29*****************
Location: vendor/symfony/console/Application.php:145
Callee: Magento\Framework\Console\Cli::doRun
Context:
$phpHandler[0]->setExceptionHandler($debugHandler);
}
}
$this->configureIO($input, $output);
try {
$exitCode = $this->doRun($input, $output);
} catch (\Exception $e) {
if (!$this->catchExceptions) {
throw $e;
}
$renderException($e);
$exitCode = $e->getCode();
*****************30*****************
Location: bin/magento:23
Callee: Symfony\Component\Console\Application::run
Context:
echo 'Autoload error: ' . $e->getMessage();
exit(1);
}
try {
$handler = new \Magento\Framework\App\ErrorHandler();
set_error_handler([$handler, 'handler']);
$application = new Magento\Framework\Console\Cli('Magento CLI');
$application->run();
} catch (\Exception $e) {
while ($e) {
echo $e->getMessage();
echo $e->getTraceAsString();
echo "
";
$e = $e->getPrevious();
}
exit(Magento\Framework\Console\Cli::RETURN_FAILURE);