@Override public void await() { for (final AnalysisResultFuture result : _results) { result.await(); } if (_resultMap.isEmpty()) { synchronized (this) { if (_resultMap.isEmpty() && _reductionErrors.isEmpty()) { _reducer.reduce(_results, _resultMap, _reductionErrors); } } } }
@Override public void await(final long timeout, final TimeUnit timeUnit) { final long offsetMillis = System.currentTimeMillis(); final long millisToWait = timeUnit.convert(timeout, TimeUnit.MILLISECONDS); for (final AnalysisResultFuture result : _results) { if (!isDone()) { result.await(timeout, TimeUnit.MILLISECONDS); final long currentMillis = System.currentTimeMillis(); final long duration = currentMillis - offsetMillis; if (duration >= millisToWait) { return; } } } }
/** * 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 */ private void awaitAndInformListener(final AnalysisJob job, final AnalysisJobMetrics analysisJobMetrics, final RowProcessingMetrics rowProcessingMetrics, final AnalysisResultFuture resultFuture) { SharedExecutorService.get().execute(() -> { resultFuture.await(); if (resultFuture.isSuccessful()) { _analysisListener.jobSuccess(job, analysisJobMetrics); } }); }
public Serializable serializeResult(final AnalysisResultFuture resultFuture, final String slaveJobId) { try { // wait for result to be ready resultFuture.await(); final Serializable resultObject; if (resultFuture.isSuccessful()) { resultObject = new SimpleAnalysisResult(resultFuture.getResultMap()); } else { resultObject = new ArrayList<>(resultFuture.getErrors()); } return resultObject; } finally { if (slaveJobId != null) { _runningJobs.remove(slaveJobId); } } }
final AnalysisResultFuture result = sparkAnalysisRunner.run(); result.await();
final AnalysisResultFuture resultFuture = runner.run(previewJob.analysisJobBuilder.toAnalysisJob()); resultFuture.await();
final AnalysisResultFuture resultFuture = runner.run(analysisJobBuilder.toAnalysisJob()); resultFuture.await();
resultFuture.await(); } finally { removeRunningJob(tenantContext, execution);