Azure / azure-storage-python

Microsoft Azure Storage Library for Python
https://azure-storage.readthedocs.io
MIT License
338 stars 240 forks source link

TableService: batch operations do not end immediately on non-transient errors #622

Closed Janci144 closed 4 years ago

Janci144 commented 4 years ago

Which service(blob, file, queue) does this issue concern?

Tabls

Which version of the SDK was used? Please provide the output of pip freeze.

azure-cosmosdb-table==1.0.5

What problem was encountered?

When you try to insert the same items (that already exist) in a batch operation, it is trying to do retryies (even though it's not transient). The reason is that the batch operations REST API is returning a 202 code (ACCEPTED), but the exceptions are packaged inside the response body. The response body exception is not taken into consideration when chosing retry policy, so it's using the 202 code (ACCEPTED) from the batch response, and not the 409 code that is packaged inside the response body

Have you found a mitigation/solution?

For now we do something like this:

table_service = TableService(connection_string=connection_string)

def fff(ctx):
    if ctx.exception.status_code == 409:
        raise ctx.exception
table_service.retry_callback = fff

Note: for table service, please post the issue here instead: https://github.com/Azure/azure-cosmosdb-python.

Janci144 commented 4 years ago

Move to cosmos