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,13 +82,18 @@ function processMessage(
const statName = `${plugin.name}.${message.method}`; const statName = `${plugin.name}.${message.method}`;
const reducerStartTime = Date.now(); const reducerStartTime = Date.now();
flipperRecorderAddEvent(pluginKey, message.method, message.params); flipperRecorderAddEvent(pluginKey, message.method, message.params);
const newPluginState = plugin.persistedStateReducer!( try {
state, const newPluginState = plugin.persistedStateReducer!(
message.method, state,
message.params, message.method,
); message.params,
addBackgroundStat(statName, Date.now() - reducerStartTime); );
return newPluginState; 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( export function processMessageImmediately(
@@ -190,10 +195,11 @@ export async function processMessageQueue(
let offset = 0; let offset = 0;
let newPluginState = persistedState; let newPluginState = persistedState;
do { do {
newPluginState = plugin.persistedStateReducer!( newPluginState = processMessage(
newPluginState, newPluginState,
messages[offset].method, pluginKey,
messages[offset].params, plugin,
messages[offset],
); );
offset++; offset++;
progress++; progress++;