Skip to content

Commit 1b8d8cb

Browse files
committed
ACP2E-290: [Magento Cloud] NewRelic Alert: 'Error Rate Critical'
1 parent 2018f46 commit 1b8d8cb

File tree

1 file changed

+33
-10
lines changed

1 file changed

+33
-10
lines changed

app/code/Magento/Theme/Controller/Result/MessagePlugin.php

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
use Magento\Framework\Controller\Result\Json;
99
use Magento\Framework\Controller\ResultInterface;
10-
use Magento\Framework\Message\MessageInterface;
10+
use Magento\Framework\Stdlib\Cookie\CookieSizeLimitReachedException;
1111
use Magento\Framework\Translate\Inline\ParserInterface;
1212
use Magento\Framework\Translate\InlineInterface;
1313
use Magento\Framework\Session\Config\ConfigInterface;
@@ -101,21 +101,44 @@ public function afterRenderResult(
101101
ResultInterface $result
102102
) {
103103
if (!($subject instanceof Json)) {
104-
$newMessages = $this->messageManager->getMessages(true)->getItems();
104+
$newMessages = [];
105+
foreach ($this->messageManager->getMessages(true)->getItems() as $message) {
106+
$newMessages[] = [
107+
'type' => $message->getType(),
108+
'text' => $this->interpretationStrategy->interpret($message),
109+
];
110+
}
105111
if (!empty($newMessages)) {
106-
$messages = $this->getCookiesMessages();
107-
foreach ($newMessages as $message) {
108-
$messages[] = [
109-
'type' => $message->getType(),
110-
'text' => $this->interpretationStrategy->interpret($message),
111-
];
112-
}
113-
$this->setCookie($messages);
112+
$this->setMessages($this->getCookiesMessages(), $newMessages);
114113
}
115114
}
116115
return $result;
117116
}
118117

118+
/**
119+
* Add new messages to already existing ones.
120+
*
121+
* In case if there are too many messages clear old messages.
122+
*
123+
* @param array $oldMessages
124+
* @param array $newMessages
125+
* @throws CookieSizeLimitReachedException
126+
*/
127+
private function setMessages(array $oldMessages, array $newMessages): void
128+
{
129+
$messages = array_merge($oldMessages, $newMessages);
130+
try {
131+
$this->setCookie($messages);
132+
} catch (CookieSizeLimitReachedException $e) {
133+
if (empty($oldMessages)) {
134+
throw $e;
135+
}
136+
137+
array_shift($oldMessages);
138+
$this->setMessages($oldMessages, $newMessages);
139+
}
140+
}
141+
119142
/**
120143
* Set 'mage-messages' cookie with 'messages' array
121144
*

0 commit comments

Comments
 (0)