8000 5.4 Queue:work fails. MySQL server has gone away · Issue #19072 · laravel/framework · GitHub
[go: up one dir, main page]

Skip to content
5.4 Queue:work fails. MySQL server has gone away #19072
Closed
@Broutard

Description

@Broutard
  • Laravel Version: 5.4.19
  • PHP Version: 5.6.30
  • Database Driver & Version: Mysql 5.6

Description:

Closed issue #19005 is not fixed.

exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2006 MySQL server has gone away' in /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Connection.php:319
Stack trace:
#0 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Connection.php(319): PDO->prepare('select * from `...')
#1 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Connection.php(640): Illuminate\Database\Connection->Illuminate\Database\{closure}('select * from `...', Array)
#2 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Connection.php(607): Illuminate\Database\Connection->runQueryCallback('select * from `...', Array, Object(Closure))
#3 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Connection.php(326): Illuminate\Database\Connection->run('select * from `...', Array, Object(Closure))
#4 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(1710): Illuminate\Database\Connection->select('select * from `...', Array, false)
#5 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(1694): Illuminate\Database\Query\Builder->runSelect()
#6 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(452): Illuminate\Database\Query\Builder->get(Array)
#7 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(436): Illuminate\Database\Eloquent\Builder->getModels(Array)
#8 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php(71): Illuminate\Database\Eloquent\Builder->get(Array)
#9 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(262): Illuminate\Database\Eloquent\Builder->first(Array)
#10 /var/www/project1/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(292): Illuminate\Database\Eloquent\Builder->find(1507, Array)
#11 /var/www/project1/vendor/laravel/framework/src/Illuminate/Queue/SerializesAndRestoresModelIdentifiers.php(46): Illuminate\Database\Eloquent\Builder->findOrFail(1507)
#12 /var/www/project1/vendor/laravel/framework/src/Illuminate/Queue/SerializesModels.php(42): App\Jobs\UpdatePage->getRestoredPropertyValue(Object(Illuminate\Contracts\Database\ModelIdentifier))
#13 [internal function]: App\Jobs\UpdatePage->__wakeup()
#14 /var/www/project1/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(38): unserialize('O:19:"App\\Jobs\\...')
#15 /var/www/project1/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(69): Illuminate\Queue\CallQueuedHandler->call(Object(Illuminate\Queue\Jobs\RedisJob), Array)
#16 /var/www/project1/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(291): Illuminate\Queue\Jobs\Job->fire()
#17 /var/www/project1/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(258): Illuminate\Queue\Worker->process('redis', Object(Illuminate\Queue\Jobs\RedisJob), Object(Illuminate\Queue\WorkerOptions))
#18 /var/www/project1/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(110): Illuminate\Queue\Worker->runJob(Object(Illuminate\Queue\Jobs\RedisJob), 'redis', Object(Illuminate\Queue\WorkerOptions))
#19 /var/www/project1/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(102): Illuminate\Queue\Worker->daemon('redis', 'updatePage', Object(Illuminate\Queue\WorkerOptions))

In Illuminate/Database/Connection.php line 608, run() seems to don't catch all exceptions.
In this example, the PDOException is not catched by the catch (QueryException $e) so handleQueryException() is not executed.

Steps To Reproduce:

  1. Start a Queue Worker using command php artisan queue:work
  2. Force or wait the connection be dropped (restart mysql server is a way to do it)
  3. You will see errors being thrown every second, and the queue worker will not work again.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0