diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurableNew.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurableNew.java index 5982d88afd36..6f566996dab1 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurableNew.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurableNew.java @@ -677,13 +677,41 @@ public class PluginManagerConfigurableNew } } - List list = RepositoryHelper.loadPlugins(null); + List list = new ArrayList<>(); Map map = new HashMap<>(); + IOException exception = null; - for (IdeaPluginDescriptor plugin : list) { - map.put(plugin.getPluginId().getIdString(), plugin); + for (String host : RepositoryHelper.getPluginHosts()) { + try { + for (IdeaPluginDescriptor plugin : RepositoryHelper.loadPlugins(host, null)) { + String id = plugin.getPluginId().getIdString(); + if (!map.containsKey(id)) { + list.add(plugin); + map.put(id, plugin); + } + } + } + catch (IOException e) { + if (host == null) { + exception = e; + } + else { + PluginManagerMain.LOG.info(host, e); + } + } } + if (exception != null) { + throw exception; + } + + ApplicationManager.getApplication().invokeLater(() -> { + InstalledPluginsState state = InstalledPluginsState.getInstance(); + for (IdeaPluginDescriptor descriptor : list) { + state.onDescriptorDownload(descriptor); + } + }); + synchronized (myJBRepositoryLock) { if (myJBRepositoryList == null) { myJBRepositoryList = list;