繁体   English   中英

在Azure开发存储上,并行上传块Blob时,我得到“指定的Blob已存在”

[英]On Azure Development Storage I get “the specified blob already exists” when uploading block blob in parallel

想知道您是否聪明的人可以帮助我正确解决错误。

我正在并行上传blob块,并且在针对实时存储运行时,这非常正常,但是针对开发存储,偶尔会出现错误“指定的blob已经存在”的错误。 怪异的/讽刺意味的是,如果斑点确实已经存在,然后我从来没有看到错误。

这是我的代码:

        var container = _cloudBlobClient.GetContainerReference(containerName);
        container.CreateIfNotExist();

        CloudBlockBlob blob = container.GetBlockBlobReference(blobname);

        // calc number of blocks. Add 1 for remainder
        var blockCount = ((int)Math.Floor((double)(length / mainBlockSize))) + 1;
        var blockIds = new List<string>();

        Parallel.For(0, blockCount, j =>
        {
            int blockSize = mainBlockSize;


            // if the last block then calculate the remaining block size
            if (j == blockCount - 1)
                blockSize = (int)length - (mainBlockSize * (blockCount - 1));

            var bytes = new byte[blockSize];

            string blockId = Convert.ToBase64String(Encoding.UTF8.GetBytes(j.ToString("00000")));

            lock (_mutex)
            {
                // these operations need to co-exist so the correct block order is maintained
                blockIds.Add(blockId);
                stream.Read(bytes, 0, blockSize);
            }

            blob.PutBlock(blockId, new MemoryStream(bytes), null);
        });

        // commit the blob with the list of blocks
        blob.PutBlockList(blockIds);

我尝试设置

_cloudBlobClient.ParallelOperationThreadCount = 1;

如该线程所建议,UploadFile-CloudBlockBlob的行为是什么? 看看是否会有所作为,但仍然出错。

啊! 第一次,我遇到了“正在运行但不能在我的机器错误中工作”的问题! :)

我已经用Fiddler检查了所有存储请求,Live和Dev之间没有区别,所以我假设这是开发存储中的错误。 关于如何最好地解决这个问题的任何想法?

谢谢!

您是否已将其发布在Windows Azure MSDN论坛( http://tinyurl.com/wazforum )上?

如果这样做,WA存储团队中的某个人应该介入,调查并确认这是开发存储的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM