Skip to content

Commit a9d3da5

Browse files
committed
Prevent ElasticSearchAliasInit jobs overlapping
Prevent multiple `ElasticSearchAliasInit` jobs from runing at the same time by using the `WithoutOverlapping` middleware [1] [1]: https://laravel.com/docs/10.x/queues#preventing-job-overlaps Bug: T416158
1 parent 8f25277 commit a9d3da5

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

app/Jobs/ElasticSearchAliasInit.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use App\Http\Curl\HttpRequest;
66
use App\WikiDb;
77
use Illuminate\Foundation\Bus\Dispatchable;
8+
use Illuminate\Queue\Middleware\WithoutOverlapping;
89
use Illuminate\Support\Facades\Log;
910

1011
class ElasticSearchAliasInit extends Job {
@@ -24,6 +25,15 @@ public function __construct(int $wikiId, string $esHost, ?string $sharedPrefix =
2425
$this->sharedPrefix = $sharedPrefix ?? getenv('ELASTICSEARCH_SHARED_INDEX_PREFIX');
2526
}
2627

28+
/**
29+
* Get the middleware the job should pass through.
30+
*
31+
* @return array<int, object>
32+
*/
33+
public function middleware(): array {
34+
return [new WithoutOverlapping('elasticsearch-alias-init')];
35+
}
36+
2737
public function handle(HttpRequest $request) {
2838
Log::info(__METHOD__ . ": Updating Elasticsearch aliases for $this->wikiId");
2939

0 commit comments

Comments
 (0)