From 61550843c97b23719ea2ea3f9b034773827557a1 Mon Sep 17 00:00:00 2001 From: Bernhard Geisberger Date: Tue, 19 Dec 2023 00:49:57 +0100 Subject: [PATCH] [fleet] Python SDK library might be created before listener invocation GitOrigin-RevId: d1ff30bb2f6c3d2764ca7cc0c22e34af2b4fd6a6 --- .../python/facet/PythonSdkTableListener.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/python/pluginCore/impl/src/com/jetbrains/python/facet/PythonSdkTableListener.java b/python/pluginCore/impl/src/com/jetbrains/python/facet/PythonSdkTableListener.java index a2538c66696b..4eadd7372cc5 100644 --- a/python/pluginCore/impl/src/com/jetbrains/python/facet/PythonSdkTableListener.java +++ b/python/pluginCore/impl/src/com/jetbrains/python/facet/PythonSdkTableListener.java @@ -19,7 +19,17 @@ public class PythonSdkTableListener implements ProjectJdkTable.Listener { public void jdkAdded(@NotNull final Sdk sdk) { if (sdk.getSdkType() instanceof PythonSdkType) { ApplicationManager.getApplication().invokeLater(() -> ApplicationManager.getApplication().runWriteAction(() -> { - addLibrary(sdk); + final ModifiableModelsProvider provider = ModifiableModelsProvider.getInstance(); + final LibraryTable.ModifiableModel libraryTableModifiableModel = provider.getLibraryTableModifiableModel(); + Library library = libraryTableModifiableModel.getLibraryByName(PythonFacetUtil.getFacetLibraryName(sdk.getName())); + provider.disposeLibraryTableModifiableModel(libraryTableModifiableModel); + if (library == null) { + addLibrary(sdk); + } + else { + // Library might already be created before listener invocation, e.g. by PythonFacetUtil.updateLibrary + updateLibrary(sdk); + } })); } }