From 7822099f50b324f2d048fbd32fb3d54fe4d73c0b Mon Sep 17 00:00:00 2001 From: Pascal Hartig Date: Fri, 25 Aug 2023 02:14:22 -0700 Subject: [PATCH] Do not throw when a plugin is already added Summary: Causes a lot of errors that don't seem to be preventable from a plugin author's perspective and also completely benign. https://www.internalfb.com/logview/flipper_javascript/3b754533c5da4e91fe8c0a3318cf8d5c?trace_tab=latest Reviewed By: lblasa Differential Revision: D48642974 fbshipit-source-id: 5ba542afbaa4175e1657d4b229d8bab62fac9862 --- xplat/Flipper/FlipperClient.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/xplat/Flipper/FlipperClient.cpp b/xplat/Flipper/FlipperClient.cpp index 345de0e19..53537c0e2 100644 --- a/xplat/Flipper/FlipperClient.cpp +++ b/xplat/Flipper/FlipperClient.cpp @@ -59,15 +59,17 @@ void FlipperClient::addPlugin(std::shared_ptr plugin) { performAndReportError([this, plugin]() { log("FlipperClient::addPlugin " + plugin->identifier()); auto step = flipperState_->start("Add plugin " + plugin->identifier()); + auto needs_refresh = false; std::lock_guard lock(mutex_); if (plugins_.find(plugin->identifier()) != plugins_.end()) { - throw std::out_of_range( - "plugin " + plugin->identifier() + " already added."); + log("plugin " + plugin->identifier() + " already added."); + } else { + plugins_[plugin->identifier()] = plugin; + needs_refresh = true; } - plugins_[plugin->identifier()] = plugin; step->complete(); - if (connected_) { + if (connected_ && needs_refresh) { refreshPlugins(); } });