in cloud-vmware-server/src/main/java/jetbrains/buildServer/clouds/vmware/tasks/VmwareUpdateTaskManager.java [32:52]
public VmwareUpdateInstanceTask createUpdateTask(@NotNull final VMWareApiConnector connector, @NotNull final VMWareCloudClient client){
final Set<String> keys = new HashSet<>();
final VmwarePooledUpdateInstanceTask pooledTask;
try {
POOLED_TASKS_LOCK.writeLock().lock();
myUpdateTasks.forEach((key, t) -> {
if (t.isExhausted()) {
keys.add(connector.getKey());
}
});
keys.forEach(myUpdateTasks::remove);
pooledTask = myUpdateTasks.computeIfAbsent(connector.getKey(), k -> createNewPooledTask(connector, client));
pooledTask.setShouldKeep();
} finally {
POOLED_TASKS_LOCK.writeLock().unlock();
}
final VmwareUpdateInstanceTask task = new VmwareUpdateInstanceTask(connector.getKey(), client, pooledTask);
task.register();
return task;
}