in google-cloud-server-base/src/main/java/jetbrains/buildServer/clouds/base/connector/CloudAsyncTaskExecutor.java [77:108]
private void processSingleTask(AsyncCloudTask task) {
final Future<CloudTaskResult> future = task.executeOrGetResultAsync();
if (future.isDone()) {
final TaskCallbackHandler handler = myExecutingTasks.get(task);
try {
final CloudTaskResult result = future.get();
handler.onComplete();
if (result.isHasErrors()) {
handler.onError(result.getThrowable());
} else {
handler.onSuccess();
}
} catch (Exception e) {
LOG.warn(String.format("An error occurred while executing : '%s': %s", task.toString(), e.toString()));
handler.onError(e);
}
myExecutingTasks.remove(task);
if (myLongTasks.remove(task) != null) {
final long operationTime = System.currentTimeMillis() - task.getStartTime();
LOG.info(String.format("Long operation finished: '%s' took %d seconds to execute", task.toString(), operationTime / 1000));
}
} else {
final long operationTime = System.currentTimeMillis() - task.getStartTime();
if (operationTime > LONG_TASK_TIME) {
final Long lastTimeReported = myLongTasks.get(task);
if (lastTimeReported == null || (System.currentTimeMillis() - lastTimeReported) > LONG_TASK_TIME) {
LOG.info(String.format("Detected long running task:('%s', running for %d seconds)", task.toString(), operationTime / 1000));
myLongTasks.put(task, System.currentTimeMillis());
}
}
}
}