void (@NotNull Sdk sdk, @NotNull Project project, @NotNull PyUpdateSdkRequestData requestData) { if (!ourEnabledInTests && ApplicationManager.getApplication().isUnitTestMode()) { LOG.info("Skipping background update for '" + sdk + "' in unit test mode"); return; } TrackingUtil.trackActivity(project, PythonActivityKey.INSTANCE, () -> { synchronized (ourLock) { if (ourUnderRefresh.contains(sdk)) { if (Trigger.LOG.isDebugEnabled()) { PyUpdateSdkRequestData previousRequest = ourToBeRefreshed.get(sdk); if (previousRequest != null) { String cause = Trigger.getCauseByTrace(previousRequest.myTraceback); Trigger.LOG.debug("Discarding previous update for " + sdk + " triggered by " + cause); } } ourToBeRefreshed.merge(sdk, requestData, PyUpdateSdkRequestData::merge); return; } else { ourUnderRefresh.add(sdk); } } ProgressManager.getInstance().run(new PyUpdateSdkTask(project, sdk, requestData)); }); }