From: Mikhail Golubev Date: Sat, 6 Aug 2016 18:31:03 +0000 (+0300) Subject: Preserve original stacktrace for exceptions in PyPackageUtil#refreshAndGetPackagesMod... X-Git-Tag: dbe/163.2414~26 X-Git-Url: https://git.jetbrains.org/?p=idea%2Fcommunity.git;a=commitdiff_plain;h=bb01708e36dcf2c3a4e34e318cff0c6f5776c5fd;ds=sidebyside Preserve original stacktrace for exceptions in PyPackageUtil#refreshAndGetPackagesModally() The same way it's done in PythonSdkUpdater, i.e. original stacktrace is attached as exception's cause and the whole trace is included only with debug level of logging. --- diff --git a/python/src/com/jetbrains/python/packaging/PyPackageUtil.java b/python/src/com/jetbrains/python/packaging/PyPackageUtil.java index 0fc1b2017a35..387968336a60 100644 --- a/python/src/com/jetbrains/python/packaging/PyPackageUtil.java +++ b/python/src/com/jetbrains/python/packaging/PyPackageUtil.java @@ -282,6 +282,7 @@ public class PyPackageUtil { @Nullable public static List refreshAndGetPackagesModally(@NotNull Sdk sdk) { final Ref> packagesRef = Ref.create(); + @SuppressWarnings("ThrowableInstanceNeverThrown") final Throwable callStacktrace = new Throwable(); LOG.debug("Showing modal progress for collecting installed packages", new Throwable()); PyUtil.runWithProgress(null, PyBundle.message("sdk.scanning.installed.packages"), true, false, indicator -> { indicator.setIndeterminate(true); @@ -289,7 +290,13 @@ public class PyPackageUtil { packagesRef.set(PyPackageManager.getInstance(sdk).refreshAndGetPackages(false)); } catch (ExecutionException e) { - LOG.warn(e); + if (LOG.isDebugEnabled()) { + e.initCause(callStacktrace); + LOG.debug(e); + } + else { + LOG.warn(e.getMessage()); + } } }); return packagesRef.get();