gpt4 book ai didi

c# - CloudBlockBlob AcquireLease 为两个 worker 角色提供两个租约

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:13 25 4
gpt4 key购买 nike

我正在开发一个应用程序,但我时不时会出错,我必须同步多个辅助角色与 blob 上的租约。

下面是我的 worker 角色的初始化代码

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageAccount"));
string blobContainerName = RoleEnvironment.GetConfigurationSettingValue("BlobContainer");
CloudBlobContainer blobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(blobContainerName);
blobContainer.CreateIfNotExists();
string blobName = RoleEnvironment.GetConfigurationSettingValue("BlobToBeLeased");
_blob = blobContainer.GetBlockBlobReference(blobName);

if (!_blob.Exists())
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes("This is dummy data")))
{
try
{
_blob.UploadFromStream(ms);
}
catch (StorageException storageException)
{
if (storageException.RequestInformation.HttpStatusCode != 412)
throw;
}
}
}

这是我的 AcquireLease 方法:

private void AcquireLease()
{
try
{
var leaseId = _blob.AcquireLease(null, null);
Trace.WriteLine("==========> Lease acquired! <========== ID => " + leaseId);
_accessCondition = new AccessCondition {LeaseId = leaseId};
}
catch (Exception)
{
Trace.WriteLine("==========> Lease rejected! <==========");
}
}

问题截图: enter image description here

问题是当我调用 AcquireLease 方法时,它有时会给我两个租约...任何人都知道如何解决这个...

CloudBlockBlob 操作是原子的吗?

最佳答案

在与 Microsoft 的一个人交谈后,模拟器似乎确实与存储服务本身存在一些差异。

在 Azure 上运行相同的代码工作正常!

此答案对模拟器 v1.8.0.0 有效。

关于c# - CloudBlockBlob AcquireLease 为两个 worker 角色提供两个租约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14985234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com