【问题标题】:FileUploadMiscError azure batch output fileFileUploadMiscError 天蓝色批处理输出文件
【发布时间】:2019-01-24 12:03:36
【问题描述】:

在使用 c# 完成天蓝色批处理云任务后,我正在尝试将输出文件上传到 Azure blob。我的代码工作正常,但它给不同的任务随机给出 FileUploadMiscError - Task failed "A miscellaneous error was received while uploading a output files" 错误。

ContainerSASUrl 代码 -

 SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy
            {
                SharedAccessExpiryTime = DateTime.UtcNow.AddHours(sasUrlExpirationTime),
                Permissions = SharedAccessBlobPermissions.Write
            };
            string sasContainerToken = string.Empty;
            CloudBlobContainer container = BlobClient.GetContainerReference(containerName);

            if (await container.CreateIfNotExistsAsync())
            {
                sasContainerToken = container.GetSharedAccessSignature(sasConstraints);
            }
            sasContainerToken = container.GetSharedAccessSignature(sasConstraints);
       string outputContainerSasUrl= string.Format("{0}{1}", container.Uri, sasContainerToken);

任务提交 -

 CloudTask task = new CloudTask(taskId, taskCommandLine)
                            {
                                OutputFiles = new List<OutputFile>
                                {
                                    new OutputFile(
                                        filePattern: @"../std*.txt",
                                        destination: new OutputFileDestination(
                                                        new OutputFileBlobContainerDestination(
                                                                containerUrl: outputContainerSasUrl,
                                                        path: jobdetails.JobId+"/output")),
                                        uploadOptions: new OutputFileUploadOptions(
                                                        uploadCondition: OutputFileUploadCondition.TaskCompletion)
                                    ),
                                    new OutputFile(
                                        filePattern: @"%AZ_BATCH_JOB_PREP_WORKING_DIR%\*.dat",
                                        destination: new OutputFileDestination(new OutputFileBlobContainerDestination(
                                                            containerUrl: outputContainerSasUrl,
                                                            path:jobdetails.JobId+"/output")),
                                        uploadOptions: new OutputFileUploadOptions(
                                                            uploadCondition: OutputFileUploadCondition.TaskCompletion))
                                }
                            };
                            task.UserIdentity = new UserIdentity(new AutoUserSpecification(AutoUserScope.Pool, ElevationLevel.Admin));
                            task.ResourceFiles = inputFiles;
                            TaskConstraints taskConstraints = new TaskConstraints();
                            taskConstraints.MaxTaskRetryCount = 2;
                            task.Constraints = taskConstraints;

此代码运行良好,但随机失败

【问题讨论】:

    标签: c# azure azure-batch


    【解决方案1】:

    你能检查一下你的 fileuploadout.txt 和 fileuploaderr.txt 应该和任务 stdout.txt 和 stderr.txt 一起写吗?理想情况下,如果您可以在此处共享它们(请确保编辑任何详细信息,例如登录其中的 SAS)。

    【讨论】:

    • 在 fileuploaderr 文件中它只是内部服务器错误。但在 fileuploadout 文件中出现类似 重试策略不允许重试.....HTTP状态码=400,异常=指定的阻止列表无效的错误。错误代码:无效块列表。我已验证正在创建 outfile。
    • fileuploadout 是否还包含该请求的请求 ID?
    • 我找到了根本原因。我试图将任务输出保存在作业准备目录 AZ_BATCH_JOB_PREP_WORKING_DIR 中。而不是现在我使用任务输出目录 AZ_BATCH_TASK_WORKING_DIR 这帮助我解决了这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多