【发布时间】:2013-09-13 11:47:44
【问题描述】:
我正在使用 azure 表查询来检索分配给用户的所有错误实体。 之后我更改实体的属性以声明实体处于处理模式。 处理完实体后,我从表中删除实体。
当我进行并行测试时,可能会在查询期间发生一个实体已被另一个线程处理和删除的情况。因此,当我想替换实体时,我收到错误 404 ResourceNotFound。
有没有办法测试实体是在线程之外更改还是仍然存在?捕获错误 404 并忽略它更好还是我应该再次查询实体(似乎对我来说都不合适)?
TableQuery<ErrorObjectTableEntity> query = new TableQuery<ErrorObjectTableEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, user));
List<ErrorObjectTableEntity> queryResult = table.ExecuteQuery(query).OrderBy(x => x.action).ToList();
foreach (ErrorObjectTableEntity entity in queryResult)
{
entity.inProcess = true;
try
{
TableOperation updateOperation = TableOperation.Replace(entity);
table.Execute(updateOperation);
}
catch
{
//..some logging here
//catch error 404?
}
//do some action
try
{
TableOperation deleteOperation = TableOperation.Delete(entity);
table.Execute(deleteOperation);
}
catch{...}
}
【问题讨论】:
标签: azure error-handling exists azure-table-storage