Skip to content

Commit a7fd4e5

Browse files
authored
Merge pull request #48 from nonanerz/fix_delayed_job
fix delayed job with no time set
2 parents 11b55bb + 49ea36f commit a7fd4e5

2 files changed

Lines changed: 14 additions & 4 deletions

File tree

src/Mcfedr/QueueManagerBundle/Manager/DoctrineDelayQueueManager.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@ public function put(string $name, array $arguments = [], array $options = []): J
5555
$jobTime = new Carbon("+{$options['delay']} seconds", new \DateTimeZone('UTC'));
5656
}
5757

58-
if (!isset($jobTime) || $jobTime < new \DateTime('+30 seconds', new \DateTimeZone('UTC'))) {
59-
if (isset($jobTime) && (!isset($options['force_delay']) || !$options['force_delay'])) {
60-
return $this->queueManagerRegistry->put($name, $arguments, $jobOptions, $jobManager);
61-
}
58+
$executeImmediately = !isset($jobTime) || $jobTime < new \DateTime('+30 seconds', new \DateTimeZone('UTC'));
59+
$executeImmediately = $executeImmediately && (!isset($jobTime) || !isset($options['force_delay']) || !$options['force_delay']);
60+
61+
if ($executeImmediately) {
62+
return $this->queueManagerRegistry->put($name, $arguments, $jobOptions, $jobManager);
6263
}
6364

6465
$job = new DoctrineDelayJob($name, $arguments, $jobOptions, $jobManager, $jobTime);

tests/Mcfedr/QueueManagerBundle/Tests/Manager/DoctrineDelayQueueManagerTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,4 +242,13 @@ public function testNonForceDelay(): void
242242

243243
self::assertNotInstanceOf(DoctrineDelayJob::class, $putJob);
244244
}
245+
246+
public function testNonForceDelayWithNoTimeSet(): void
247+
{
248+
$putJob = $this->manager->put('test_worker', [
249+
'argument_a' => 'a',
250+
]);
251+
252+
self::assertNotInstanceOf(DoctrineDelayJob::class, $putJob);
253+
}
245254
}

0 commit comments

Comments
 (0)