Azurite icon indicating copy to clipboard operation
Azurite copied to clipboard

Azurite fails on `If-Unmodified-Since: null` while Azure Storage ignores it

Open elkash opened this issue 8 months ago • 4 comments

I'm using Azurite in our test environment and have noticed a behavioral difference compared to Azure remote storage when sending conditional headers.

Specifically, we're issuing an HTTP request to read blob data, including the If-Unmodified-Since conditional header set to null. On Azure remote storage, this request succeeds — it appears the service ignores the header when the value is null.

However, when sending the same request to Azurite, it fails with a 412 Precondition Failed response. Based on the logs, Azurite does not ignore the null value and instead enforces the condition, resulting in an error.

Azurite logs:

2025-04-16T12:39:54.178Z ... DeserializedParameters={"options":{"range":"bytes=202195224-202260759",...,"modifiedAccessConditions":{"ifUnmodifiedSince":null}}... ErrorHTTPStatusCode=412 ErrorHTTPStatusMessage=The condition specified using HTTP conditional header(s) is not met. <Code>ConditionNotMet</Code> <Message>The condition specified using HTTP conditional header(s) is not met. RequestId:6cb296ae-b4e7-4838-99df-994de13fe608 Time:2025-04-16T12:39:54.178Z</Message> </Error>

Is this behavior expected in Azurite? If so, is there a recommended way to make Azurite behave consistently with Azure Storage in such scenarios? If not, could this be considered a bug or a potential area for improvement?

elkash avatar May 06 '25 10:05 elkash

This looks a behavior unalignment between Azurite and product Azure server on corner case.

From the public doc of Blob condition headers, it didn’t mention every corner case like null value, so Azurite is not aligned with public Azure on null value behavior. I have tested storage SDK (.net, v12.24.0) can't send such request, since null can't be convert to a valid ifUnmodifiedSince value with Storage .net SDK.

@elkash How do you send this request, could you remove the null ifUnmodifiedSince from request? If you could share the whole Azurite debug log of this request (hide credential), we can also find some hint.

To fix this, a possible way is change the code for read condition to handle null value. However, it’s better to also test if need fix other condition headers and write conditions.

blueww avatar May 07 '25 03:05 blueww

@elkash Would you please reply the question in my above comments:

  1. How do you send this request? (like with which SDK or client tool? The code or command?)
  2. Could you share the whole Azurite debug log of this request (hide credential)?
  3. Could you remove the null ifUnmodifiedSince from request, to workaround this?

blueww avatar May 12 '25 07:05 blueww

  1. In our C++ project, we manually construct HTTP requests and use the Windows native APIs provided by WinHttp.h and WinInet.h to send them. These APIs allow us to handle the full request/response cycle without relying on external SDKs or client libraries.
  2. I will attach the logs in the next comment.
  3. Removing null requires changes to our API. As a temporary solution, I found a way to omit the ifUnmodifiedSince parameter entirely, and it works. However, we need to support sending ifUnmodifiedSince: null to remain aligned with Azure Remote Storage.

elkash avatar May 12 '25 11:05 elkash

2025-05-13T10:29:50.408Z ad6df163-574a-4635-8852-d9be3dbd039e verbose: DispatchMiddleware: Dispatching request...
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e info: DispatchMiddleware: Operation=Blob_Download
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e verbose: AuthenticationMiddlewareFactory:createAuthenticationMiddleware() Validating authentications.
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e info: PublicAccessAuthenticator:validate() Start validation against public access.
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e debug: PublicAccessAuthenticator:validate() Getting account properties...
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e debug: PublicAccessAuthenticator:validate() Retrieved account name from context: devstoreaccount1, container: testdata, blob: lineitem/lineitem.parquet
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e debug: PublicAccessAuthenticator:validate() Skip public access authentication. Cannot get public access type for container testdata
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e info: BlobSharedKeyAuthenticator:validate() Start validation against account shared key authentication.
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e info: BlobSharedKeyAuthenticator:validate() Request doesn't include valid authentication header. Skip shared key authentication.
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e info: AccountSASAuthenticator:validate() Start validation against account Shared Access Signature pattern.
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e debug: AccountSASAuthenticator:validate() Getting account properties...
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e debug: AccountSASAuthenticator:validate() Retrieved account name from context: devstoreaccount1, container: testdata, blob: lineitem/lineitem.parquet
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e debug: AccountSASAuthenticator:validate() Got account properties successfully.
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e debug: AccountSASAuthenticator:validate() Retrieved signature from URL parameter sig: wfFsParHndg0Sg1jbNI/dsWsCaOd39YsSM0rjxINuRA=
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e info: AccountSASAuthenticator:validate() Failed to get valid account SAS values from request.
2025-05-13T10:29:50.409Z ad6df163-574a-4635-8852-d9be3dbd039e info: BlobSASAuthenticator:validate() Start validation against blob service Shared Access Signature pattern.
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e debug: BlobSASAuthenticator:validate() Getting account properties...
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e debug: BlobSASAuthenticator:validate() Retrieved account name from context: devstoreaccount1, container: testdata, blob: lineitem/lineitem.parquet
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e debug: BlobSASAuthenticator:validate() Got account properties successfully.
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e debug: BlobSASAuthenticator:validate() Retrieved signature from URL parameter sig: wfFsParHndg0Sg1jbNI/dsWsCaOd39YsSM0rjxINuRA=
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e debug: BlobSASAuthenticator:validate() Signed resource type is c.
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e debug: BlobSASAuthenticator:validate() Successfully got valid blob service SAS values from request. {"version":"2023-11-03","expiryTime":"2025-05-13T13:28:02Z","permissions":"racwdxltfi","containerName":"testdata","blobName":"lineitem/lineitem.parquet","signedResource":"c"}
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e info: BlobSASAuthenticator:validate() Validate signature based account key1.
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e debug: BlobSASAuthenticator:validate() String to sign is: "racwdxltfi\n\n2025-05-13T13:28:02Z\n/blob/devstoreaccount1/testdata\n\n\n\n2023-11-03\nc\n\n\n\n\n\n\n"
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e debug: BlobSASAuthenticator:validate() Calculated signature is: wfFsParHndg0Sg1jbNI/dsWsCaOd39YsSM0rjxINuRA=
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e info: BlobSASAuthenticator:validate() Signature based on key1 validation passed.
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e info: BlobSASAuthenticator:validate() Validate start and expiry time.
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e info: BlobSASAuthenticator:validate() Validate IP range.
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e info: BlobSASAuthenticator:validate() Validate request protocol.
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e debug: BlobSASAuthenticator:validate() Got permission requirements for operation Blob_Download - {"permission":"r"}
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e info: BlobSASAuthenticator:validate() Blob service SAS validation successfully.
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e verbose: DeserializerMiddleware: Start deserializing...
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e info: HandlerMiddleware: DeserializedParameters={"options":{"range":"bytes=202195224-202260759","requestId":"58FED8E9-D873-4B70-BAA4-8EAAD816FDC0","leaseAccessConditions":{},"cpkInfo":{},"modifiedAccessConditions":{"ifUnmodifiedSince":null}},"version":"2019-02-02"}
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e error: ErrorMiddleware: Received a MiddlewareError, fill error information to HTTP response
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e error: ErrorMiddleware: ErrorName=StorageError ErrorMessage=The condition specified using HTTP conditional header(s) is not met.  ErrorHTTPStatusCode=412 ErrorHTTPStatusMessage=The condition specified using HTTP conditional header(s) is not met. ErrorHTTPHeaders={"x-ms-error-code":"ConditionNotMet","x-ms-request-id":"ad6df163-574a-4635-8852-d9be3dbd039e"} ErrorHTTPBody="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Error>\n  <Code>ConditionNotMet</Code>\n  <Message>The condition specified using HTTP conditional header(s) is not met.\nRequestId:ad6df163-574a-4635-8852-d9be3dbd039e\nTime:2025-05-13T10:29:50.410Z</Message>\n</Error>" ErrorStack="StorageError: The condition specified using HTTP conditional header(s) is not met.\n    at Function.getConditionNotMet (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\errors\\StorageErrorFactory.js:192:16)\n    at ReadConditionalHeadersValidator.validate (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\conditions\\ReadConditionalHeadersValidator.js:70:53)\n    at validateReadConditions (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\conditions\\ReadConditionalHeadersValidator.js:9:43)\n    at LokiBlobMetadataStore.downloadBlob (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\persistence\\LokiBlobMetadataStore.js:754:70)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:95:5)\n    at async BlobHandler.download (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\handlers\\BlobHandler.js:43:22)"
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e error: ErrorMiddleware: Set HTTP code: 412
2025-05-13T10:29:50.410Z ad6df163-574a-4635-8852-d9be3dbd039e error: ErrorMiddleware: Set HTTP status message: The condition specified using HTTP conditional header(s) is not met.
2025-05-13T10:29:50.411Z ad6df163-574a-4635-8852-d9be3dbd039e error: ErrorMiddleware: Set HTTP Header: x-ms-error-code=ConditionNotMet
2025-05-13T10:29:50.411Z ad6df163-574a-4635-8852-d9be3dbd039e error: ErrorMiddleware: Set HTTP Header: x-ms-request-id=ad6df163-574a-4635-8852-d9be3dbd039e
2025-05-13T10:29:50.411Z ad6df163-574a-4635-8852-d9be3dbd039e error: ErrorMiddleware: Set content type: application/xml
2025-05-13T10:29:50.411Z ad6df163-574a-4635-8852-d9be3dbd039e error: ErrorMiddleware: Set HTTP body: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Error>\n  <Code>ConditionNotMet</Code>\n  <Message>The condition specified using HTTP conditional header(s) is not met.\nRequestId:ad6df163-574a-4635-8852-d9be3dbd039e\nTime:2025-05-13T10:29:50.410Z</Message>\n</Error>"
2025-05-13T10:29:50.411Z ad6df163-574a-4635-8852-d9be3dbd039e info: EndMiddleware: End response. TotalTimeInMS=4 StatusCode=412 StatusMessage=The condition specified using HTTP conditional header(s) is not met. Headers={"server":"Azurite-Blob/3.27.0","x-ms-error-code":"ConditionNotMet","x-ms-request-id":"ad6df163-574a-4635-8852-d9be3dbd039e","content-type":"application/xml"}
2025-05-13T10:29:56.414Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobStorageContextMiddleware: RequestMethod=GET RequestURL=http://localhost/devstoreaccount1/testdata/lineitem/lineitem.parquet?sv=2023-11-03&se=2025-05-13T13%3A28%3A02Z&sr=c&sp=racwdxltfi&sig=wfFsParHndg0Sg1jbNI%2FdsWsCaOd39YsSM0rjxINuRA%3D RequestHeaders:{"connection":"Keep-Alive","accept-encoding":"peerdist","if-unmodified-since":"","user-agent":"SQLBLOBACCESS","x-ms-version":"2019-02-02","x-ms-date":"Tue, 13 May 2025 10:29:55 GMT","x-ms-range":"bytes=202195224-202260759","x-ms-client-request-id":"A3533AB7-34D2-4860-8F2A-BA5CCBE2380B","x-p2p-peerdist":"Version=1.1","x-p2p-peerdistex":"MinContentInformation=1.0, MaxContentInformation=2.0","host":"localhost:10000"} ClientIP=127.0.0.1 Protocol=http HTTPVersion=1.1
2025-05-13T10:29:56.414Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobStorageContextMiddleware: Account=devstoreaccount1 Container=testdata Blob=lineitem/lineitem.parquet
2025-05-13T10:29:56.414Z 27a471bd-91b0-4fd9-943d-755602c73d08 verbose: DispatchMiddleware: Dispatching request...
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: DispatchMiddleware: Operation=Blob_Download
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 verbose: AuthenticationMiddlewareFactory:createAuthenticationMiddleware() Validating authentications.
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: PublicAccessAuthenticator:validate() Start validation against public access.
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: PublicAccessAuthenticator:validate() Getting account properties...
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: PublicAccessAuthenticator:validate() Retrieved account name from context: devstoreaccount1, container: testdata, blob: lineitem/lineitem.parquet
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: PublicAccessAuthenticator:validate() Skip public access authentication. Cannot get public access type for container testdata
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobSharedKeyAuthenticator:validate() Start validation against account shared key authentication.
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobSharedKeyAuthenticator:validate() Request doesn't include valid authentication header. Skip shared key authentication.
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: AccountSASAuthenticator:validate() Start validation against account Shared Access Signature pattern.
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: AccountSASAuthenticator:validate() Getting account properties...
2025-05-13T10:29:56.415Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: AccountSASAuthenticator:validate() Retrieved account name from context: devstoreaccount1, container: testdata, blob: lineitem/lineitem.parquet
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: AccountSASAuthenticator:validate() Got account properties successfully.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: AccountSASAuthenticator:validate() Retrieved signature from URL parameter sig: wfFsParHndg0Sg1jbNI/dsWsCaOd39YsSM0rjxINuRA=
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: AccountSASAuthenticator:validate() Failed to get valid account SAS values from request.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobSASAuthenticator:validate() Start validation against blob service Shared Access Signature pattern.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: BlobSASAuthenticator:validate() Getting account properties...
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: BlobSASAuthenticator:validate() Retrieved account name from context: devstoreaccount1, container: testdata, blob: lineitem/lineitem.parquet
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: BlobSASAuthenticator:validate() Got account properties successfully.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: BlobSASAuthenticator:validate() Retrieved signature from URL parameter sig: wfFsParHndg0Sg1jbNI/dsWsCaOd39YsSM0rjxINuRA=
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: BlobSASAuthenticator:validate() Signed resource type is c.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: BlobSASAuthenticator:validate() Successfully got valid blob service SAS values from request. {"version":"2023-11-03","expiryTime":"2025-05-13T13:28:02Z","permissions":"racwdxltfi","containerName":"testdata","blobName":"lineitem/lineitem.parquet","signedResource":"c"}
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobSASAuthenticator:validate() Validate signature based account key1.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: BlobSASAuthenticator:validate() String to sign is: "racwdxltfi\n\n2025-05-13T13:28:02Z\n/blob/devstoreaccount1/testdata\n\n\n\n2023-11-03\nc\n\n\n\n\n\n\n"
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: BlobSASAuthenticator:validate() Calculated signature is: wfFsParHndg0Sg1jbNI/dsWsCaOd39YsSM0rjxINuRA=
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobSASAuthenticator:validate() Signature based on key1 validation passed.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobSASAuthenticator:validate() Validate start and expiry time.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobSASAuthenticator:validate() Validate IP range.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobSASAuthenticator:validate() Validate request protocol.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 debug: BlobSASAuthenticator:validate() Got permission requirements for operation Blob_Download - {"permission":"r"}
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: BlobSASAuthenticator:validate() Blob service SAS validation successfully.
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 verbose: DeserializerMiddleware: Start deserializing...
2025-05-13T10:29:56.416Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: HandlerMiddleware: DeserializedParameters={"options":{"range":"bytes=202195224-202260759","requestId":"A3533AB7-34D2-4860-8F2A-BA5CCBE2380B","leaseAccessConditions":{},"cpkInfo":{},"modifiedAccessConditions":{"ifUnmodifiedSince":null}},"version":"2019-02-02"}
2025-05-13T10:29:56.417Z 27a471bd-91b0-4fd9-943d-755602c73d08 error: ErrorMiddleware: Received a MiddlewareError, fill error information to HTTP response
2025-05-13T10:29:56.417Z 27a471bd-91b0-4fd9-943d-755602c73d08 error: ErrorMiddleware: ErrorName=StorageError ErrorMessage=The condition specified using HTTP conditional header(s) is not met.  ErrorHTTPStatusCode=412 ErrorHTTPStatusMessage=The condition specified using HTTP conditional header(s) is not met. ErrorHTTPHeaders={"x-ms-error-code":"ConditionNotMet","x-ms-request-id":"27a471bd-91b0-4fd9-943d-755602c73d08"} ErrorHTTPBody="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Error>\n  <Code>ConditionNotMet</Code>\n  <Message>The condition specified using HTTP conditional header(s) is not met.\nRequestId:27a471bd-91b0-4fd9-943d-755602c73d08\nTime:2025-05-13T10:29:56.416Z</Message>\n</Error>" ErrorStack="StorageError: The condition specified using HTTP conditional header(s) is not met.\n    at Function.getConditionNotMet (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\errors\\StorageErrorFactory.js:192:16)\n    at ReadConditionalHeadersValidator.validate (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\conditions\\ReadConditionalHeadersValidator.js:70:53)\n    at validateReadConditions (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\conditions\\ReadConditionalHeadersValidator.js:9:43)\n    at LokiBlobMetadataStore.downloadBlob (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\persistence\\LokiBlobMetadataStore.js:754:70)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:95:5)\n    at async BlobHandler.download (C:\\snapshot\\s\\Azurite\\dist\\src\\blob\\handlers\\BlobHandler.js:43:22)"
2025-05-13T10:29:56.417Z 27a471bd-91b0-4fd9-943d-755602c73d08 error: ErrorMiddleware: Set HTTP code: 412
2025-05-13T10:29:56.417Z 27a471bd-91b0-4fd9-943d-755602c73d08 error: ErrorMiddleware: Set HTTP status message: The condition specified using HTTP conditional header(s) is not met.
2025-05-13T10:29:56.417Z 27a471bd-91b0-4fd9-943d-755602c73d08 error: ErrorMiddleware: Set HTTP Header: x-ms-error-code=ConditionNotMet
2025-05-13T10:29:56.417Z 27a471bd-91b0-4fd9-943d-755602c73d08 error: ErrorMiddleware: Set HTTP Header: x-ms-request-id=27a471bd-91b0-4fd9-943d-755602c73d08
2025-05-13T10:29:56.417Z 27a471bd-91b0-4fd9-943d-755602c73d08 error: ErrorMiddleware: Set content type: application/xml
2025-05-13T10:29:56.417Z 27a471bd-91b0-4fd9-943d-755602c73d08 error: ErrorMiddleware: Set HTTP body: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Error>\n  <Code>ConditionNotMet</Code>\n  <Message>The condition specified using HTTP conditional header(s) is not met.\nRequestId:27a471bd-91b0-4fd9-943d-755602c73d08\nTime:2025-05-13T10:29:56.416Z</Message>\n</Error>"
2025-05-13T10:29:56.417Z 27a471bd-91b0-4fd9-943d-755602c73d08 info: EndMiddleware: End response. TotalTimeInMS=3 StatusCode=412 StatusMessage=The condition specified using HTTP conditional header(s) is not met. Headers={"server":"Azurite-Blob/3.27.0","x-ms-error-code":"ConditionNotMet","x-ms-request-id":"27a471bd-91b0-4fd9-943d-755602c73d08","content-type":"application/xml"}

elkash avatar May 13 '25 10:05 elkash