Which service(blob, file) does this issue concern?
ADLS with HNS
Which version of the SDK was used?
Latest (2.0.4)
On which platform were you using? (.Net Framework version or .Net Core version, and OS version)
.Net Core 3.1, Linux
How can the problem be reproduced? It'd be better if the code caused the problem can be shared.
It is hardly reproduced but the main goal of this issue is to collect knowledge when this specific error code is returned.
What problem was encountered?
Scenario:
Directory is uploaded to ADLS, contains a few files
Then the same directory is uploaded again and overwrite policy is set to always overwrite
This error for some files is returned (when this error is returned, each retry returns the same error):
There are a few errors like this (looks like error for each block for a file):
Microsoft.Azure.Storage.DataMovement.TransferException: The transfer failed.
---> Microsoft.Azure.Storage.StorageException: Blob operation is not supported.
at async Task<T> Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteAsync<T>(RESTCommand<T> cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token)
at async Task Microsoft.Azure.Storage.Blob.CloudBlockBlob.PutBlockAsync(string blockId, Stream blockData, Checksum contentChecksum, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, AggregatingProgressIncrementer progressIncrementer, CancellationToken cancellationToken)
at async Task Microsoft.Azure.Storage.DataMovement.TransferControllers.BlockBlobWriter.UploadBlobAsync()
at async Task Microsoft.Azure.Storage.DataMovement.TransferControllers.BlockBlobWriter.DoWorkInternalAsync()
at async Task<bool> Microsoft.Azure.Storage.DataMovement.TransferControllers.SyncTransferController.DoWorkInternalAsync()
at async Task<bool> Microsoft.Azure.Storage.DataMovement.TransferControllers.TransferControllerBase.DoWorkAsync()
at async Task Microsoft.Azure.Storage.DataMovement.TransferScheduler.ExecuteJobInternalAsync(TransferJob job, CancellationToken cancellationToken)
Request Information
RequestID:028ae229-901e-0058-786f-b569e2000000
RequestDate:Thu, 13 Jul 2023 09:48:37 GMT
StatusMessage:Blob operation is not supported.
ErrorCode:BlobOperationNotSupported
ErrorMessage:Blob operation is not supported.
RequestId:028ae229-901e-0058-786f-b569e2000000
Time:2023-07-13T09:48:37.5144508Z
--- End of inner exception stack trace ---
at async Task Microsoft.Azure.Storage.DataMovement.TransferScheduler.ExecuteJobInternalAsync(TransferJob job, CancellationToken cancellationToken)
at async Task Microsoft.Azure.Storage.DataMovement.SingleObjectTransfer.ExecuteAsync(TransferScheduler scheduler, CancellationToken cancellationToken)
and then:
HttpStatusMessage="Blob operation is not supported."
HttpStatusCode=409
InnerMessage="Blob operation is not supported."
Microsoft.Azure.Storage.DataMovement.TransferException: The transfer failed. ---> Microsoft.Azure.Storage.StorageException: Blob operation is not supported.
at async Task<T> Microsoft.Azure.Storage.Core.Executor.Executor.ExecuteAsync<T>(RESTCommand<T> cmd, IRetryPolicy policy, OperationContext operationContext, CancellationToken token)
at async Task Microsoft.Azure.Storage.DataMovement.TransferControllers.BlockBlobWriter.CommitAsync()
at async Task Microsoft.Azure.Storage.DataMovement.TransferControllers.BlockBlobWriter.DoWorkInternalAsync()
at async Task<bool> Microsoft.Azure.Storage.DataMovement.TransferControllers.SyncTransferController.DoWorkInternalAsync()
at async Task<bool> Microsoft.Azure.Storage.DataMovement.TransferControllers.TransferControllerBase.DoWorkAsync()
at async Task Microsoft.Azure.Storage.DataMovement.TransferScheduler.ExecuteJobInternalAsync(TransferJob job, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.Azure.Storage.DataMovement.TransferScheduler.ExecuteJobInternalAsync(TransferJob job, CancellationToken cancellationToken)
at Microsoft.Azure.Storage.DataMovement.SingleObjectTransfer.ExecuteAsync(TransferScheduler scheduler, CancellationToken cancellationToken)
at Microsoft.Azure.Storage.DataMovement.FlatDirectoryTransfer.DoTransfer(Transfer transfer, TransferScheduler scheduler, CancellationToken cancellationToken)
When issue occurred for a specific file, then it is 100% reproducible but only for this library. Different tool like AzCopy for example can overwrite this file without error.
When file is deleted and then uploaded again, there is no error.
Have you found a mitigation/solution?
Yes, we have solution. AzCopy allow to overwrite such a file without issue.
What is our goal?
We would like to know in what scenarios it is possible to get 409 (Blob operation is not supported.) error code. How we can prevent this situation.
What rest operation are involved? Put block and Put Block list - 409 was returned for both operations.
Which service(blob, file) does this issue concern?
ADLS with HNS
Which version of the SDK was used?
Latest (2.0.4)
On which platform were you using? (.Net Framework version or .Net Core version, and OS version)
.Net Core 3.1, Linux
How can the problem be reproduced? It'd be better if the code caused the problem can be shared.
It is hardly reproduced but the main goal of this issue is to collect knowledge when this specific error code is returned.
What problem was encountered?
Scenario:
There are a few errors like this (looks like error for each block for a file):
and then:
When issue occurred for a specific file, then it is 100% reproducible but only for this library. Different tool like AzCopy for example can overwrite this file without error. When file is deleted and then uploaded again, there is no error.
Have you found a mitigation/solution?
Yes, we have solution. AzCopy allow to overwrite such a file without issue.
What is our goal?
We would like to know in what scenarios it is possible to get 409 (Blob operation is not supported.) error code. How we can prevent this situation. What rest operation are involved?
Put block
andPut Block list
- 409 was returned for both operations.