diff --git a/app/Classes/Jobs/Commands/V2/ETLPurchaseOrderTransactionV2CommandJob.php b/app/Classes/Jobs/Commands/V2/ETLPurchaseOrderTransactionV2CommandJob.php index ca9cbba1..6166646d 100644 --- a/app/Classes/Jobs/Commands/V2/ETLPurchaseOrderTransactionV2CommandJob.php +++ b/app/Classes/Jobs/Commands/V2/ETLPurchaseOrderTransactionV2CommandJob.php @@ -77,7 +77,18 @@ class ETLPurchaseOrderTransactionV2CommandJob implements ShouldQueue (App()->make(ETLPDFPurchaseOrderClaudeProcessor::class))->execute($this->files, $this->bookingId, $this->batchIndex !== 1, $this->isLast); - $finished = Cache::increment('etl_finished_jobs_' . $this->groupId); + $cacheKey = 'etl_finished_jobs_' . $this->groupId; + $lockKey = $cacheKey . '_lock'; + $finished = 0; + + Cache::lock($lockKey, 10)->block(5, function () use ($cacheKey, &$finished) { + // Get current counter (default 0) + $current = Cache::get($cacheKey, 0); + $finished = (int)$current + 1; + + // Save updated counter + Cache::put($cacheKey, $finished, 3600); + }); Log::info('ETL job finished for group ' . $this->groupId, [ 'batch_index' => $this->batchIndex,