code: private void awaitAndInformListener(final AnalysisJob job, final AnalysisJobMetrics analysisJobMetrics,
              final RowProcessingMetrics rowProcessingMetrics, final AnalysisResultFuture resultFuture) {
          SharedExecutorService.get().execute(new Runnable() {
              @Override
              public void run() {
                  resultFuture.await();
                  if (resultFuture.isSuccessful()) {
                      _analysisListener.jobSuccess(job, analysisJobMetrics);
                  }
              }
          });
      }
docs: Spawns a new thread for awaiting the result future (which will force the
  reducer to inform about the progress).
  
  @param job
  @param analysisJobMetrics
  @param resultFuture