From 19eb13b71628dbda71f65c24564321c10c603359 Mon Sep 17 00:00:00 2001 From: Rob Brain Date: Wed, 23 Feb 2022 18:17:41 +1200 Subject: [PATCH 1/6] Check if failed log storage is disabled in Queue Service Provider Fixes this issue: https://github.com/jenssegers/laravel-mongodb/issues/2356 --- src/MongodbQueueServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MongodbQueueServiceProvider.php b/src/MongodbQueueServiceProvider.php index a0f8e0361..ffc87f968 100644 --- a/src/MongodbQueueServiceProvider.php +++ b/src/MongodbQueueServiceProvider.php @@ -13,7 +13,7 @@ class MongodbQueueServiceProvider extends QueueServiceProvider protected function registerFailedJobServices() { // Add compatible queue failer if mongodb is configured. - if ($this->app['db']->connection(config('queue.failed.database'))->getDriverName() == 'mongodb') { + if (config('queue.failed.driver') !== null && $this->app['db']->connection(config('queue.failed.database'))->getDriverName() == 'mongodb') { $this->app->singleton('queue.failer', function ($app) { return new MongoFailedJobProvider($app['db'], config('queue.failed.database'), config('queue.failed.table')); }); From 5813e6c7dd32c279706348348d352b434cbdce6f Mon Sep 17 00:00:00 2001 From: Rob Brain Date: Tue, 1 Mar 2022 15:25:30 +0700 Subject: [PATCH 2/6] Update MongodbQueueServiceProvider.php Update to use Illuminate\Queue\Failed\NullFailedJobProvider --- src/MongodbQueueServiceProvider.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/MongodbQueueServiceProvider.php b/src/MongodbQueueServiceProvider.php index ffc87f968..106ccda7b 100644 --- a/src/MongodbQueueServiceProvider.php +++ b/src/MongodbQueueServiceProvider.php @@ -4,6 +4,7 @@ use Illuminate\Queue\QueueServiceProvider; use Jenssegers\Mongodb\Queue\Failed\MongoFailedJobProvider; +use Illuminate\Queue\Failed\NullFailedJobProvider; class MongodbQueueServiceProvider extends QueueServiceProvider { @@ -12,8 +13,13 @@ class MongodbQueueServiceProvider extends QueueServiceProvider */ protected function registerFailedJobServices() { + if (array_key_exists('driver', $config) && + (is_null($config['driver']) || $config['driver'] === 'null')) { + return new NullFailedJobProvider; + } + // Add compatible queue failer if mongodb is configured. - if (config('queue.failed.driver') !== null && $this->app['db']->connection(config('queue.failed.database'))->getDriverName() == 'mongodb') { + if ($this->app['db']->connection(config('queue.failed.database'))->getDriverName() == 'mongodb') { $this->app->singleton('queue.failer', function ($app) { return new MongoFailedJobProvider($app['db'], config('queue.failed.database'), config('queue.failed.table')); }); From cdf4556b363443c247618459b8116fc81d08945a Mon Sep 17 00:00:00 2001 From: divine <48183131+divine@users.noreply.github.com> Date: Tue, 1 Mar 2022 21:23:35 +0300 Subject: [PATCH 3/6] fix: fix config and add correct failed job provider --- src/MongodbQueueServiceProvider.php | 47 ++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/MongodbQueueServiceProvider.php b/src/MongodbQueueServiceProvider.php index 106ccda7b..11c498530 100644 --- a/src/MongodbQueueServiceProvider.php +++ b/src/MongodbQueueServiceProvider.php @@ -9,22 +9,41 @@ class MongodbQueueServiceProvider extends QueueServiceProvider { /** - * @inheritdoc + * Register the failed job services. + * + * @return void */ protected function registerFailedJobServices() { - if (array_key_exists('driver', $config) && - (is_null($config['driver']) || $config['driver'] === 'null')) { - return new NullFailedJobProvider; - } - - // Add compatible queue failer if mongodb is configured. - if ($this->app['db']->connection(config('queue.failed.database'))->getDriverName() == 'mongodb') { - $this->app->singleton('queue.failer', function ($app) { - return new MongoFailedJobProvider($app['db'], config('queue.failed.database'), config('queue.failed.table')); - }); - } else { - parent::registerFailedJobServices(); - } + $this->app->singleton('queue.failer', function ($app) { + $config = $app['config']['queue.failed']; + + if (array_key_exists('driver', $config) && + (is_null($config['driver']) || $config['driver'] === 'null')) { + return new NullFailedJobProvider; + } + + if (isset($config['driver']) && $config['driver'] === 'mongodb') { + return $this->mongoFailedJobProvider($config); + } else if (isset($config['driver']) && $config['driver'] === 'dynamodb') { + return $this->dynamoFailedJobProvider($config); + } elseif (isset($config['driver']) && $config['driver'] === 'database-uuids') { + return $this->databaseUuidFailedJobProvider($config); + } elseif (isset($config['table'])) { + return $this->databaseFailedJobProvider($config); + } else { + return new NullFailedJobProvider; + } + }); + } + + /** + * Create a new MongoDB failed job provider. + * + */ + protected function mongoFailedJobProvider(array $config): MongoFailedJobProvider + { + return new MongoFailedJobProvider($this->app['db'], $config['database'], $config['table']); } + } From 090510cdf31a94863cca15c93a953e49698521c6 Mon Sep 17 00:00:00 2001 From: divine <48183131+divine@users.noreply.github.com> Date: Tue, 1 Mar 2022 21:28:35 +0300 Subject: [PATCH 4/6] fix: add driver configuration to test --- tests/config/queue.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/config/queue.php b/tests/config/queue.php index 20ef36703..7d52487fa 100644 --- a/tests/config/queue.php +++ b/tests/config/queue.php @@ -17,6 +17,7 @@ 'failed' => [ 'database' => env('MONGO_DATABASE'), + 'driver' => 'mongodb', 'table' => 'failed_jobs', ], From 30729d4320eb23fc0217d599138ef5ec69bcc867 Mon Sep 17 00:00:00 2001 From: divine <48183131+divine@users.noreply.github.com> Date: Tue, 1 Mar 2022 21:30:49 +0300 Subject: [PATCH 5/6] fix: php-cs-fixer --- src/MongodbQueueServiceProvider.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/MongodbQueueServiceProvider.php b/src/MongodbQueueServiceProvider.php index 11c498530..8b94ae52d 100644 --- a/src/MongodbQueueServiceProvider.php +++ b/src/MongodbQueueServiceProvider.php @@ -2,9 +2,9 @@ namespace Jenssegers\Mongodb; +use Illuminate\Queue\Failed\NullFailedJobProvider; use Illuminate\Queue\QueueServiceProvider; use Jenssegers\Mongodb\Queue\Failed\MongoFailedJobProvider; -use Illuminate\Queue\Failed\NullFailedJobProvider; class MongodbQueueServiceProvider extends QueueServiceProvider { @@ -25,7 +25,7 @@ protected function registerFailedJobServices() if (isset($config['driver']) && $config['driver'] === 'mongodb') { return $this->mongoFailedJobProvider($config); - } else if (isset($config['driver']) && $config['driver'] === 'dynamodb') { + } elseif (isset($config['driver']) && $config['driver'] === 'dynamodb') { return $this->dynamoFailedJobProvider($config); } elseif (isset($config['driver']) && $config['driver'] === 'database-uuids') { return $this->databaseUuidFailedJobProvider($config); @@ -39,7 +39,6 @@ protected function registerFailedJobServices() /** * Create a new MongoDB failed job provider. - * */ protected function mongoFailedJobProvider(array $config): MongoFailedJobProvider { From ae17990e4f202b0e55d506c7955106b4df843222 Mon Sep 17 00:00:00 2001 From: divine <48183131+divine@users.noreply.github.com> Date: Tue, 1 Mar 2022 23:42:05 +0300 Subject: [PATCH 6/6] fix: add correct driver config --- src/MongodbQueueServiceProvider.php | 1 - tests/TestCase.php | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MongodbQueueServiceProvider.php b/src/MongodbQueueServiceProvider.php index 8b94ae52d..7edfdb97f 100644 --- a/src/MongodbQueueServiceProvider.php +++ b/src/MongodbQueueServiceProvider.php @@ -44,5 +44,4 @@ protected function mongoFailedJobProvider(array $config): MongoFailedJobProvider { return new MongoFailedJobProvider($this->app['db'], $config['database'], $config['table']); } - } diff --git a/tests/TestCase.php b/tests/TestCase.php index cf379a652..584ff82de 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -71,5 +71,6 @@ protected function getEnvironmentSetUp($app) 'expire' => 60, ]); $app['config']->set('queue.failed.database', 'mongodb2'); + $app['config']->set('queue.failed.driver', 'mongodb'); } }