in packages/azure-services/src/azure-batch/batch.ts [251:296]
private async addTaskCollection(jobId: string, messages: Message[]): Promise<JobTask[]> {
if (messages.length === 0) {
return [];
}
const jobTasks: Map<string, JobTask> = new Map();
const taskAddParameters: BatchServiceModels.TaskAddParameter[] = [];
let sasUrl: string;
try {
sasUrl = await this.containerSASUrlProvider.generateSASUrl(Batch.batchLogContainerName);
} catch (error) {
this.logger.logError(`Encountered the error while generating Blob Storage SAS URL`, {
error: System.serializeError(error),
blobContainerName: Batch.batchLogContainerName,
});
}
await Promise.all(
messages.map(async (message) => {
const jobTask = new JobTask(message.messageId);
jobTasks.set(jobTask.id, jobTask);
const taskAddParameter = await this.getTaskAddParameter(jobId, jobTask.id, message.messageText, sasUrl);
taskAddParameters.push(taskAddParameter);
}),
);
const client = await this.batchClientProvider();
const taskAddCollectionResult = await client.task.addCollection(jobId, taskAddParameters);
taskAddCollectionResult.value.forEach((taskAddResult) => {
if (/success/i.test(taskAddResult.status)) {
jobTasks.get(taskAddResult.taskId).state = JobTaskState.queued;
} else {
jobTasks.get(taskAddResult.taskId).state = JobTaskState.failed;
jobTasks.get(taskAddResult.taskId).error = taskAddResult.error.message.value;
this.logger.logError(`An error occurred while adding new task to the job.`, {
correlatedBatchJobId: jobId,
correlatedBatchTaskId: taskAddResult.taskId,
error: taskAddResult.error.message.value,
taskAddResult: JSON.stringify(taskAddResult),
});
}
});
return Array.from(jobTasks.values());
}