在我们的prod环境中,我们正在下载blob,有时我看到一个文件下载大约60%的行为然后没有任何反应。它没有错误输出也没有返回。发生这种情况后,下载将无限期地停止。写入文件的句柄不会被释放。我假设在StartSchedule()
类TransferScheduler
方法中创建的任务无限期地运行。转储没有透露任何东西。有没有办法弄清楚可能是什么问题?
我使用的是版本0.5.0
答案 0 :(得分:0)
我创建了一个C#控制台项目,但我无法重现您提到的问题,即使我使用4G大小的文件进行测试。我使用Microsoft.Azure.Storage.DataMovement SDK版本0.5.0和0.6.0进行测试。以下是我用于测试的代码。
string storageConnectionString = "connection string";
CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("container name");
blobContainer.CreateIfNotExists();
string destPath = "file path";
CloudBlockBlob sourceBlob = blobContainer.GetBlockBlobReference("blob name");
TransferManager.Configurations.ParallelOperations = 64;
// Setup the transfer context and track the download progress
SingleTransferContext context = new SingleTransferContext
{
ProgressHandler = new Progress<TransferStatus>(progress =>
{
Console.WriteLine("Bytes download: {0}", progress.BytesTransferred);
})
};
// download thee blob
var task = TransferManager.DownloadAsync(
sourceBlob, destPath, null, context, CancellationToken.None);
task.Wait();