Make sure that failing to process an individual event, does not crash the plugin

Summary: See title

Reviewed By: jknoxville

Differential Revision: D19177573

fbshipit-source-id: 269a6a09887c930d446315eeaa31f28e1d100e7f
This commit is contained in:
Michel Weststrate
2020-01-02 07:12:06 -08:00
committed by Facebook Github Bot
parent b8e752412e
commit 1f6a344f4d

View File

@@ -82,6 +82,7 @@ function processMessage(
const statName = `${plugin.name}.${message.method}`;
const reducerStartTime = Date.now();
flipperRecorderAddEvent(pluginKey, message.method, message.params);
try {
const newPluginState = plugin.persistedStateReducer!(
state,
message.method,
@@ -89,6 +90,10 @@ function processMessage(
);
addBackgroundStat(statName, Date.now() - reducerStartTime);
return newPluginState;
} catch (e) {
console.error(`Failed to process event for plugin ${plugin.name}`, e);
return state;
}
}
export function processMessageImmediately(
@@ -190,10 +195,11 @@ export async function processMessageQueue(
let offset = 0;
let newPluginState = persistedState;
do {
newPluginState = plugin.persistedStateReducer!(
newPluginState = processMessage(
newPluginState,
messages[offset].method,
messages[offset].params,
pluginKey,
plugin,
messages[offset],
);
offset++;
progress++;