Skip to content

Commit 8d601b2

Browse files
robjbraindivine
andauthored
Check if failed log storage is disabled in Queue Service Provider (#2357)
* fix: check if failed log storage is disabled in Queue Service Provider Co-authored-by: divine <[email protected]>
1 parent 1e49c5e commit 8d601b2

File tree

3 files changed

+34
-9
lines changed

3 files changed

+34
-9
lines changed

src/MongodbQueueServiceProvider.php

+32-9
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,46 @@
22

33
namespace Jenssegers\Mongodb;
44

5+
use Illuminate\Queue\Failed\NullFailedJobProvider;
56
use Illuminate\Queue\QueueServiceProvider;
67
use Jenssegers\Mongodb\Queue\Failed\MongoFailedJobProvider;
78

89
class MongodbQueueServiceProvider extends QueueServiceProvider
910
{
1011
/**
11-
* @inheritdoc
12+
* Register the failed job services.
13+
*
14+
* @return void
1215
*/
1316
protected function registerFailedJobServices()
1417
{
15-
// Add compatible queue failer if mongodb is configured.
16-
if ($this->app['db']->connection(config('queue.failed.database'))->getDriverName() == 'mongodb') {
17-
$this->app->singleton('queue.failer', function ($app) {
18-
return new MongoFailedJobProvider($app['db'], config('queue.failed.database'), config('queue.failed.table'));
19-
});
20-
} else {
21-
parent::registerFailedJobServices();
22-
}
18+
$this->app->singleton('queue.failer', function ($app) {
19+
$config = $app['config']['queue.failed'];
20+
21+
if (array_key_exists('driver', $config) &&
22+
(is_null($config['driver']) || $config['driver'] === 'null')) {
23+
return new NullFailedJobProvider;
24+
}
25+
26+
if (isset($config['driver']) && $config['driver'] === 'mongodb') {
27+
return $this->mongoFailedJobProvider($config);
28+
} elseif (isset($config['driver']) && $config['driver'] === 'dynamodb') {
29+
return $this->dynamoFailedJobProvider($config);
30+
} elseif (isset($config['driver']) && $config['driver'] === 'database-uuids') {
31+
return $this->databaseUuidFailedJobProvider($config);
32+
} elseif (isset($config['table'])) {
33+
return $this->databaseFailedJobProvider($config);
34+
} else {
35+
return new NullFailedJobProvider;
36+
}
37+
});
38+
}
39+
40+
/**
41+
* Create a new MongoDB failed job provider.
42+
*/
43+
protected function mongoFailedJobProvider(array $config): MongoFailedJobProvider
44+
{
45+
return new MongoFailedJobProvider($this->app['db'], $config['database'], $config['table']);
2346
}
2447
}

tests/TestCase.php

+1
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,6 @@ protected function getEnvironmentSetUp($app)
7171
'expire' => 60,
7272
]);
7373
$app['config']->set('queue.failed.database', 'mongodb2');
74+
$app['config']->set('queue.failed.driver', 'mongodb');
7475
}
7576
}

tests/config/queue.php

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
'failed' => [
1919
'database' => env('MONGO_DATABASE'),
20+
'driver' => 'mongodb',
2021
'table' => 'failed_jobs',
2122
],
2223

0 commit comments

Comments
 (0)