Azure / azure-storage-python

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

list_blobs() crashes due to response from blob storage not containing Creation-Time #629

Open enicky opened 4 years ago

enicky commented 4 years ago

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

blob

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

azure-storage-blob==2.1.0 azure-storage-common==2.1.0 azure-common==1.1.23

What problem was encountered?

Call to list_blobs(container_name) throws an error in the end when the blobs have been created by the client on an IoTEdgeBlobStorage. The issue is that the Creation-Time appears to be empty when the request returns from the IoTEdge module. eg: `

test.txt Tue, 20 Aug 2019 08:12:37 GMT 0x8D7254629E53C01 32 application/octet-stream DdOF7ew/k5qHSdf00h0hzg== BlockBlob unlocked available false ` If you look at `azure/storage/blob/_deserialization.py` on you see something like `setattr(blob.properties, info[1], info[2](property_element.text))` if the Creation-Time is empty this property_element.text is None which makes the call to the `info[2] (parser.parse)` crash ### Have you found a mitigation/solution? Yes and no. You could test to see if property_element.text is empty or not. But I don't know if this is the way to go. It's maybe better to make sure that the blob storage returns a Creation-Time property.
zezha-msft commented 4 years ago

Hi @enicky, thanks for reaching out!

In order to investigate this issue on the service side, could you please email me your account name and the request ID? Thanks!

zezha-msft commented 4 years ago

FYI my email address can be found if you click on my profile. 😄

zezha-msft commented 4 years ago

Hi @enicky, FYI the issue will be solved in iotedge Storage, by not returning an empty XML element. Thanks for your patience.

We'll still improve the serialization issue in the SDK though, to be more fault-tolerant in general.