in controller/src/main/java/org/apache/airavata/mft/controller/TransferDispatcher.java [53:96]
public void submitTransferToAgent(List<String> filteredAgents, String transferId,
TransferApiRequest transferRequest,
AgentTransferRequest agentTransferRequest, String consulKey) {
try {
if (filteredAgents.isEmpty()) {
mftConsulClient.saveTransferState(transferId, null, new TransferState()
.setUpdateTimeMils(System.currentTimeMillis())
.setState("FAILED").setPercentage(0)
.setPublisher("controller")
.setDescription("No qualifying agent was found to orchestrate the transfer"));
return;
}
mftConsulClient.saveTransferState(transferId,null, new TransferState()
.setState("STARTING")
.setPercentage(0)
.setUpdateTimeMils(System.currentTimeMillis())
.setPublisher("controller")
.setDescription("Initializing the transfer"));
// TODO use a better way to select the right agent
mftConsulClient.commandTransferToAgent(selectTargetAgent(filteredAgents), transferId, agentTransferRequest);
mftConsulClient.markTransferAsProcessed(transferId, transferRequest);
logger.info("Marked transfer {} as processed", transferId);
} catch (Exception e) {
logger.error("Failed to submit the transfer {} to agent", transferId, e);
try {
mftConsulClient.saveTransferState(transferId, null, new TransferState()
.setUpdateTimeMils(System.currentTimeMillis())
.setState("FAILED").setPercentage(0)
.setPublisher("controller")
.setDescription("Failed to submit the transfer to agent. Error: " + ExceptionUtils.getRootCauseMessage(e)));
} catch (Exception e2) {
// Ignore
logger.warn("Failed to update the failed transfer state for transfer id {}", transferId, e);
}
} finally {
mftConsulClient.getKvClient().deleteKey(consulKey);
}
}