繁体   English   中英

并发在 Azure 表存储中不起作用

[英]Concurrency not working in Azure table storage

在使用 Azure 表存储时,我遇到了多线程并发问题。 每个线程都试图更新相同的记录(分区键 + 行键)。 在那种情况下,我的期望是如果它是陈旧数据,库将自动检查etag并抛出异常 412 Pre-Condition Failed。 但是,在我的情况下,它总是随着最后一次通话而更新。

值得注意的是,如果我使用TableEntityOperation.Replace(entity) ,它会抛出 412 异常。 似乎TableEntityOperation.InsertorMerge(entity)不检查并发性。

您看到此行为的原因是因为TableEntityOperation.InsertorMerge(entity)方法,它是Insert Or Merge Entity的包装器 REST API 操作不支持乐观并发。 只有Merge EntityUpdate Entity支持乐观并发。

documentation (强调我的):

插入或合并实体操作使用 MERGE 动词,必须使用 2011-08-18 版本或更新版本调用。 此外,它不使用 If-Match header 这些属性将此操作与更新实体操作区分开来,尽管这两个操作的请求主体相同。

暂无
暂无

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

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