Azure表服务 - 到处都有409个错误

时间:2017-06-05 18:36:01

标签: azure uuid

在最近4个小时内,我发现200多个请求在azure表报告409上失败。我环顾四周,这意味着PK重复。由于这是一个专门用于记录的表格,因此我真的不关心密钥,所以我的RowKeyGuid.NewGuid() ...

是否有另一个原因让azure表返回409或我实际看到UUID发生冲突?

PS:我真的希望还有其他原因,因为在过去的4个小时里,我只处理了5万个请求...

2 个答案:

答案 0 :(得分:1)

很可能您的客户端没有看到HTTP 200响应表明插入成功(客户端超时,网络错误等),但插件确实在服务器端成功发生。然后,当客户端重试该操作时,它接收到409,因为该实体已经存在于服务器上。

如果您启用这些功能,您将能够在存储分析日志中看到相关证据。

您可以尝试解决初始客户端故障,但这并不能最终解决问题,因为您无论如何都需要处理此类故障。由于您只是编写日志记录数据,因此您可能不关心重试时的409,因此最好的解决方案是忽略它。其他可能的解决方案是使用“插入或替换”或“插入或合并”操作,而不仅仅是插入。

有关更多内容,请参阅https://github.com/Azure/azure-storage-java/issues/35https://social.msdn.microsoft.com/Forums/azure/en-US/9ab80192-6450-41c2-a964-4ea092c1f6ef/table-storage-handling-retry-error-where-item-already-exists?forum=windowsazuredata

答案 1 :(得分:0)

如果您比时钟更快地呼叫Guid.NewGuid(),它可能会生成相同的Guid。尝试在Guid.NewGuid()次呼叫之间放几毫秒。