Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0d2d782

Browse files
Add a nullable logger to MemoryLimitReceiver
1 parent7a5c7dd commit0d2d782

File tree

3 files changed

+50
-7
lines changed

3 files changed

+50
-7
lines changed

‎src/Symfony/Component/Messenger/Tests/Transport/Enhancers/MemoryLimitReceiverTest.php‎

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespaceSymfony\Component\Messenger\Tests\Transport\Enhancers;
1313

1414
usePHPUnit\Framework\TestCase;
15+
usePsr\Log\LoggerInterface;
1516
useSymfony\Component\Messenger\Tests\Fixtures\CallbackReceiver;
1617
useSymfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1718
useSymfony\Component\Messenger\Transport\Enhancers\MemoryLimitReceiver;
@@ -44,8 +45,11 @@ public function testReceiverStopsWhenMemoryLimitExceeded($memoryUsage, $memoryLi
4445
return$memoryUsage;
4546
};
4647

47-
$memoryLimitReceiver =newMemoryLimitReceiver($decoratedReceiver,$memoryLimit,$memoryResolver);
48-
$memoryLimitReceiver->receive(function () {});
48+
$memoryLimitReceiver =newMemoryLimitReceiver($decoratedReceiver,$memoryLimit,null,$memoryResolver);
49+
$memoryLimitReceiver->receive(
50+
function () {
51+
}
52+
);
4953
}
5054

5155
publicfunctionmemoryProvider()
@@ -83,4 +87,33 @@ public function invalidMemoryLimitProvider()
8387
yieldarray('128m');// lowercase unit
8488
yieldarray('128 M');// string with space
8589
}
90+
91+
publicfunctiontestReceiverLogsMemoryExceededWhenLoggerIsGiven()
92+
{
93+
$callable =function ($handler) {
94+
$handler(newDummyMessage('API'));
95+
};
96+
97+
$decoratedReceiver =$this->getMockBuilder(CallbackReceiver::class)
98+
->setConstructorArgs(array($callable))
99+
->enableProxyingToOriginalMethods()
100+
->getMock();
101+
102+
$decoratedReceiver->expects($this->once())->method('receive');
103+
$decoratedReceiver->expects($this->once())->method('stop');
104+
105+
$logger =$this->createMock(LoggerInterface::class);
106+
$logger->expects($this->once())->method('info')
107+
->with($this->equalTo('Receiver stopped due to memory limit exceeded.'));
108+
109+
$memoryResolver =function () {
110+
return70 *1024 *1024;
111+
};
112+
113+
$memoryLimitReceiver =newMemoryLimitReceiver($decoratedReceiver,'64M',$logger,$memoryResolver);
114+
$memoryLimitReceiver->receive(
115+
function () {
116+
}
117+
);
118+
}
86119
}

‎src/Symfony/Component/Messenger/Tests/WorkerTest.php‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
useSymfony\Component\Messenger\MessageBusInterface;
1717
useSymfony\Component\Messenger\Tests\Fixtures\CallbackReceiver;
1818
useSymfony\Component\Messenger\Tests\Fixtures\DummyMessage;
19-
useSymfony\Component\Messenger\Transport\ReceiverInterface;
2019
useSymfony\Component\Messenger\Worker;
2120

2221
class WorkerTestextends TestCase

‎src/Symfony/Component/Messenger/Transport/Enhancers/MemoryLimitReceiver.php‎

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespaceSymfony\Component\Messenger\Transport\Enhancers;
1313

14+
usePsr\Log\LoggerInterface;
1415
useSymfony\Component\Messenger\Transport\ReceiverInterface;
1516

1617
/**
@@ -20,12 +21,19 @@ class MemoryLimitReceiver implements ReceiverInterface
2021
{
2122
private$decoratedReceiver;
2223
private$memoryLimit;
24+
private$logger;
2325
private$memoryResolver;
2426

25-
publicfunction__construct(ReceiverInterface$decoratedReceiver,string$memoryLimit,callable$memoryResolver =null)
27+
publicfunction__construct(
28+
ReceiverInterface$decoratedReceiver,
29+
string$memoryLimit,
30+
LoggerInterface$logger =null,
31+
callable$memoryResolver =null
32+
)
2633
{
2734
$this->decoratedReceiver =$decoratedReceiver;
2835
$this->memoryLimit =$this->convertToOctets($memoryLimit);
36+
$this->logger =$logger;
2937
$this->memoryResolver =$memoryResolver ?:function () {
3038
return\memory_get_usage();
3139
};
@@ -39,6 +47,9 @@ public function receive(callable $handler): void
3947
$memoryResolver =$this->memoryResolver;
4048
if ($memoryResolver() >=$this->memoryLimit) {
4149
$this->stop();
50+
if ($this->logger) {
51+
$this->logger->info('Receiver stopped due to memory limit exceeded.');
52+
}
4253
}
4354
});
4455
}
@@ -50,16 +61,16 @@ public function stop(): void
5061

5162
privatefunctionconvertToOctets(string$size):int
5263
{
53-
if (\preg_match('/^(\d+)([G|M|K]*)$/',$size,$matches)) {
64+
if (!\preg_match('/^(\d+)([G|M|K]*)$/',$size,$matches)) {
65+
thrownew \InvalidArgumentException('Invalid memory limit given.');
66+
}else {
5467
if ('G' ==$matches[2]) {
5568
$size =$matches[1] *1024 *1024 *1024;
5669
}elseif ('M' ==$matches[2]) {
5770
$size =$matches[1] *1024 *1024;
5871
}elseif ('K' ==$matches[2]) {
5972
$size =$matches[1] *1024;
6073
}
61-
}else {
62-
thrownew \InvalidArgumentException('Invalid memory limit given.');
6374
}
6475

6576
return$size;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp