From af9624d58382c86a0e1a03409d7bb158e01b5815 Mon Sep 17 00:00:00 2001 From: divine <48183131+divine@users.noreply.github.com> Date: Fri, 11 Mar 2022 04:07:07 +0300 Subject: [PATCH 1/2] fix: backport check failed log storage Backport #2357 to L8 Co-Authored-By: Rob Brain <10143910+robjbrain@users.noreply.github.com> --- src/MongodbQueueServiceProvider.php | 41 ++++++++++++++++++++++------- tests/TestCase.php | 1 + tests/config/queue.php | 1 + 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/MongodbQueueServiceProvider.php b/src/MongodbQueueServiceProvider.php index a0f8e0361..7edfdb97f 100644 --- a/src/MongodbQueueServiceProvider.php +++ b/src/MongodbQueueServiceProvider.php @@ -2,23 +2,46 @@ namespace Jenssegers\Mongodb; +use Illuminate\Queue\Failed\NullFailedJobProvider; use Illuminate\Queue\QueueServiceProvider; use Jenssegers\Mongodb\Queue\Failed\MongoFailedJobProvider; class MongodbQueueServiceProvider extends QueueServiceProvider { /** - * @inheritdoc + * Register the failed job services. + * + * @return void */ protected function registerFailedJobServices() { - // 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); + } elseif (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']); } } diff --git a/tests/TestCase.php b/tests/TestCase.php index 20970656a..ac86333e2 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -68,5 +68,6 @@ protected function getEnvironmentSetUp($app) 'expire' => 60, ]); $app['config']->set('queue.failed.database', 'mongodb2'); + $app['config']->set('queue.failed.driver', 'mongodb'); } } 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 4ebe74b134d5d11016cc0d14619d6d2cb9ea1cdd Mon Sep 17 00:00:00 2001 From: divine <48183131+divine@users.noreply.github.com> Date: Fri, 11 Mar 2022 04:12:00 +0300 Subject: [PATCH 2/2] chore: update changelog Co-Authored-By: Rob Brain <10143910+robjbrain@users.noreply.github.com> --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e6c2fb30..376c561cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ All notable changes to this project will be documented in this file. ### Added - Support for cursor pagination [#2358](https://github.com/jenssegers/laravel-mongodb/pull/2358) by [@Jeroenwv](https://github.com/Jeroenwv). +### Fixed +- Backport check if queue service is disabled [#2357](https://github.com/jenssegers/laravel-mongodb/pull/2357) by [@robjbrain](https://github.com/robjbrain). + ## [3.8.4] - 2021-05-27 ### Fixed