Enhance a warning about taking too much time to process plugin messages
Summary: Without seeing the specific messages it might be hard to debug what is taking so long. CHANGELOG: Enhance a warning about taking too much time to process plugin messages Differential Revision: D40340272 fbshipit-source-id: a4dbd639cf389763a3cb00a190216c0e653c08e4
This commit is contained in:
committed by
Facebook GitHub Bot
parent
b5a750935d
commit
1f78da881e
@@ -29,7 +29,11 @@ function processMessagesImmediately(
|
|||||||
const reducerStartTime = Date.now();
|
const reducerStartTime = Date.now();
|
||||||
try {
|
try {
|
||||||
plugin.receiveMessages(messages);
|
plugin.receiveMessages(messages);
|
||||||
addBackgroundStat(plugin.definition.id, Date.now() - reducerStartTime);
|
addBackgroundStat(
|
||||||
|
plugin.definition.id,
|
||||||
|
messages,
|
||||||
|
Date.now() - reducerStartTime,
|
||||||
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(
|
console.error(
|
||||||
`Failed to process event for plugin ${plugin.definition.id}`,
|
`Failed to process event for plugin ${plugin.definition.id}`,
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {onBytesReceived} from '../dispatcher/tracking';
|
import {onBytesReceived} from '../dispatcher/tracking';
|
||||||
|
import {Message} from '../reducers/pluginMessageQueue';
|
||||||
|
|
||||||
type StatEntry = {
|
type StatEntry = {
|
||||||
cpuTimeTotal: number; // Total time spend in persisted Reducer
|
cpuTimeTotal: number; // Total time spend in persisted Reducer
|
||||||
@@ -105,7 +106,11 @@ function createEmptyStat(): StatEntry {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addBackgroundStat(plugin: string, cpuTime: number) {
|
export function addBackgroundStat(
|
||||||
|
plugin: string,
|
||||||
|
messages: Message[],
|
||||||
|
cpuTime: number,
|
||||||
|
) {
|
||||||
if (!pluginBackgroundStats.has(plugin)) {
|
if (!pluginBackgroundStats.has(plugin)) {
|
||||||
pluginBackgroundStats.set(plugin, createEmptyStat());
|
pluginBackgroundStats.set(plugin, createEmptyStat());
|
||||||
}
|
}
|
||||||
@@ -118,6 +123,7 @@ export function addBackgroundStat(plugin: string, cpuTime: number) {
|
|||||||
if (cpuTime > MAX_BACKGROUND_TASK_TIME) {
|
if (cpuTime > MAX_BACKGROUND_TASK_TIME) {
|
||||||
console.warn(
|
console.warn(
|
||||||
`Plugin ${plugin} took too much time while doing background: ${cpuTime}ms. Handling background messages should take less than ${MAX_BACKGROUND_TASK_TIME}ms.`,
|
`Plugin ${plugin} took too much time while doing background: ${cpuTime}ms. Handling background messages should take less than ${MAX_BACKGROUND_TASK_TIME}ms.`,
|
||||||
|
messages,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user