fix: clear usage interval in finally so it cannot leak on send failure (#25478)
getChatEventEmitter starts a setInterval emitting a `usage` socket event every second; clearInterval ran only after sendMessageSocket resolved, so any throw/reject left the interval firing for the page lifetime. Each failed send added another orphaned interval, inflating server-side usage accounting and growing CPU/memory over a session. Wrap the send in try/finally so the interval is always cleared, on both the happy path and any thrown/rejected path. The exception still propagates unchanged. Fixes #25465 Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
6f0277db52
commit
e2502ec80f
@@ -2159,22 +2159,24 @@
|
|||||||
if (primaryModel && primaryResponseMessageId) {
|
if (primaryModel && primaryResponseMessageId) {
|
||||||
const chatEventEmitter = await getChatEventEmitter(primaryModel.id, _chatId);
|
const chatEventEmitter = await getChatEventEmitter(primaryModel.id, _chatId);
|
||||||
|
|
||||||
scrollToBottom();
|
try {
|
||||||
await sendMessageSocket(
|
scrollToBottom();
|
||||||
primaryModel,
|
await sendMessageSocket(
|
||||||
messages && messages.length > 0
|
primaryModel,
|
||||||
? messages
|
messages && messages.length > 0
|
||||||
: createMessagesList(_history, primaryResponseMessageId),
|
? messages
|
||||||
_history,
|
: createMessagesList(_history, primaryResponseMessageId),
|
||||||
primaryResponseMessageId,
|
_history,
|
||||||
_chatId,
|
primaryResponseMessageId,
|
||||||
{
|
_chatId,
|
||||||
messageIdsMap: selectedModelIds.length > 1 ? messageIdsMap : undefined,
|
{
|
||||||
regenerationPrompt
|
messageIdsMap: selectedModelIds.length > 1 ? messageIdsMap : undefined,
|
||||||
}
|
regenerationPrompt
|
||||||
);
|
}
|
||||||
|
);
|
||||||
if (chatEventEmitter) clearInterval(chatEventEmitter);
|
} finally {
|
||||||
|
if (chatEventEmitter) clearInterval(chatEventEmitter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user