Commit 4d3f45ef authored by Denisson Leal's avatar Denisson Leal

increment attempts only when taken from list

parent f826130f
...@@ -64,7 +64,7 @@ class MongoQueue extends DatabaseQueue ...@@ -64,7 +64,7 @@ class MongoQueue extends DatabaseQueue
$job = $this->database->getCollection($this->table)->findOneAndUpdate( $job = $this->database->getCollection($this->table)->findOneAndUpdate(
[ [
'queue' => $this->getQueue($queue), 'queue' => $this->getQueue($queue),
'reserved' => 0, 'reserved' => ['$ne' => 1],
'available_at' => ['$lte' => Carbon::now()->getTimestamp()], 'available_at' => ['$lte' => Carbon::now()->getTimestamp()],
], ],
[ [
...@@ -72,6 +72,9 @@ class MongoQueue extends DatabaseQueue ...@@ -72,6 +72,9 @@ class MongoQueue extends DatabaseQueue
'reserved' => 1, 'reserved' => 1,
'reserved_at' => Carbon::now()->getTimestamp(), 'reserved_at' => Carbon::now()->getTimestamp(),
], ],
'$inc' => [
'attempts' => 1,
],
], ],
[ [
'returnDocument' => FindOneAndUpdate::RETURN_DOCUMENT_AFTER, 'returnDocument' => FindOneAndUpdate::RETURN_DOCUMENT_AFTER,
...@@ -98,20 +101,12 @@ class MongoQueue extends DatabaseQueue ...@@ -98,20 +101,12 @@ class MongoQueue extends DatabaseQueue
$reserved = $this->database->collection($this->table) $reserved = $this->database->collection($this->table)
->where('queue', $this->getQueue($queue)) ->where('queue', $this->getQueue($queue))
->where(function ($query) use ($expiration, $now) { ->whereNotNull('reserved_at');
// Check for available jobs ->where('reserved_at', '<=', $expiration);
$query->where(function ($query) use ($now) { ->get();
$query->whereNull('reserved_at');
$query->where('available_at', '<=', $now);
});
// Check for jobs that are reserved but have expired
$query->orWhere('reserved_at', '<=', $expiration);
})->get();
foreach ($reserved as $job) { foreach ($reserved as $job) {
$attempts = $job['attempts'] + 1; $this->releaseJob($job['_id'], $job['attempts']);
$this->releaseJob($job['_id'], $attempts);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment