Hello,

I havent' tested that part of the code in some time now, but from what I remember it was part of a larger set of changes to prevent ceph from hanging if not enough space was available.

How it should work (but as I said, I haven't tested this in some time):
-  decrease the glance image pool quota (this is just so it's easier to test)
-  upload images to glance until space if almost full
- the image that would have filled the pool should fail to upload entirely.

It seems you are doing the correct procedure from what you described, so this probably requires a more in-depth investigation to see why it fails.

From: Fang, Liang A [liang.a.fang@intel.com]
Sent: Saturday, November 10, 2018 11:23 AM
To: Badea, Daniel; Dinescu, Stefan
Cc: starlingx-discuss@lists.starlingx.io
Subject: [Starlingx-discuss] [glance] Analysis of patch c73ab48 (Enhanced-error-messages) for StartlingX upstreaming

Hi Daniel and Stefan

 

Please refer to https://review.openstack.org/#/c/616880/

This patch is to provide detailed exception info when no space in rbd. But in my environment, if rbd has no space, the function call to rbd will not return, there’s no exception raised.

 

Details:

In /usr/local/lib/python2.7/dist-packages/glance_store/_drivers/rbd.py

-          Function call will hang at line 484 (_create_image) if no space to create image at the beginning

-          Function call will hang at line 506 (image.resize) if no space at the middle of uploading.

 

Could you please give some clue to reproduce this patch (raise rbd.NoSpace)?

Couple of other thought:

1.       This patch is to catch exception at v1 api, but v1 is about to be removed by community.

2.       rbd is just one type of the multiple types of backend, so I think catch specific backend’s exception at a common code is not so good. glance_store/rbd.py may be the better place to catch this exception. In fact rbd.py already did similar thing, see:

 

Thanks

Liang