Open klesta490 opened 1 year ago
Thank you for your feedback. This has been routed to the support team for assistance.
Thanks for the feedback! We are routing this to the appropriate team for follow-up. cc @xgithubtriage.
@klesta490 Thanks for the feedback! Considering the intermittent nature of this issue, we are routing this to the concerning team to better assist here.
Any update?
Library name and version
Azure.Storage.Blobs 12.13.1.0
Query/Question
We are using
BlockBlobClient.OpenWriteMethod(true)
to stream uploads directly to blob storage. In rare scenarios these upload fails with412 Conditon Not Met
. (like 1 in X milions of requests). The blob is not updated concurrently, onlyBlockBlobStream
returned fromOpenWriteMethod
writes to blob from single thread.I have setup storage diagnostic and the findings are for all cases very similiar. In diagnostic there is 1)
PutBlob
that creates empty blob with response201
2)PutBlock
that stages data with response201
3) Successfull request toPutBlockList
that commmits block ids and changes ETAG - unfortunatelly this201
response does not reach client and client detect this as retryable error, propably some network issue. 4) Client tries to retryPutBlockList
, because he is not sure how 3) ended. But because client have outdated ETAG, this retry fails on412 ConditonNotMet
.There are two
412
status codes, because first412
is from manually calledBlockBlobStream.Flush
(we call it manually in our code) and second one is fromBlockBlobStream.Dispose
.Is there anything I can do to avoid this? Because in most cases I have found, data are OK in blob storage, but we have to return error from our upload API.
Environment
No response