diff --git a/src/Symfony/Component/Messenger/Retry/MultiplierRetryStrategy.php b/src/Symfony/Component/Messenger/Retry/MultiplierRetryStrategy.php index 8e25783676779..bec4290122cfa 100644 --- a/src/Symfony/Component/Messenger/Retry/MultiplierRetryStrategy.php +++ b/src/Symfony/Component/Messenger/Retry/MultiplierRetryStrategy.php @@ -83,7 +83,7 @@ public function getWaitingTime(Envelope $message, ?\Throwable $throwable = null) $delay = $this->delayMilliseconds * $this->multiplier ** $retries; if ($this->jitter > 0) { - $randomness = (int) ($delay * $this->jitter); + $randomness = (int) min(\PHP_INT_MAX, $delay * $this->jitter); $delay += random_int(-$randomness, +$randomness); } @@ -91,6 +91,6 @@ public function getWaitingTime(Envelope $message, ?\Throwable $throwable = null) return $this->maxDelayMilliseconds; } - return (int) ceil($delay); + return (int) min(\PHP_INT_MAX, ceil($delay)); } } diff --git a/src/Symfony/Component/Messenger/Tests/Retry/MultiplierRetryStrategyTest.php b/src/Symfony/Component/Messenger/Tests/Retry/MultiplierRetryStrategyTest.php index d06426ea40672..d89153ebad19b 100644 --- a/src/Symfony/Component/Messenger/Tests/Retry/MultiplierRetryStrategyTest.php +++ b/src/Symfony/Component/Messenger/Tests/Retry/MultiplierRetryStrategyTest.php @@ -60,6 +60,14 @@ public function testGetWaitTime(int $delay, float $multiplier, int $maxDelay, in $this->assertSame($expectedDelay, $strategy->getWaitingTime($envelope)); } + public function testGetWaitTimeWithOverflowingDelay() + { + $strategy = new MultiplierRetryStrategy(512, \PHP_INT_MAX, 2, 0, 1); + $envelope = new Envelope(new \stdClass(), [new RedeliveryStamp(10)]); + + $this->assertSame(\PHP_INT_MAX, $strategy->getWaitingTime($envelope)); + } + public static function getWaitTimeTests(): iterable { // delay, multiplier, maxDelay, retries, expectedDelay pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy