VcsLogRefresherImpl (Consumer<? super DataPack> dataPackConsumer) { myLogData = new VcsLogData(myProject, myLogProviders, new LoggingErrorHandler(LOG), myProject); VcsLogRefresherImpl refresher = new VcsLogRefresherImpl(myProject, myLogData.getStorage(), myLogProviders, myLogData.getUserRegistry(), myLogData.getModifiableIndex(), new VcsLogProgress(myLogData), myLogData.getTopCommitsCache(), dataPackConsumer, RECENT_COMMITS_COUNT ) { @Override protected SingleTaskController.SingleTask startNewBackgroundTask(final @NotNull Task.Backgroundable refreshTask) { LOG.debug("Starting a background task..."); Future<?> future = ((ProgressManagerImpl)ProgressManager.getInstance()).runProcessWithProgressAsynchronously(refreshTask); myStartedTasks.add(future); LOG.debug(myStartedTasks.size() + " started tasks"); return new SingleTaskController.SingleTaskImpl(future, new EmptyProgressIndicator()); } }; Disposer.register(myLogData, refresher); return refresher; }