[Bug 2146432] Re: glance download fails after BackendGroupConfiguration patch

Launchpad Bug Tracker 2146432 at bugs.launchpad.net
Sun Mar 29 22:43:14 UTC 2026


Status changed to 'Confirmed' because the bug affects multiple users.

** Changed in: glance (Ubuntu)
       Status: New => Confirmed

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to glance in Ubuntu.
https://bugs.launchpad.net/bugs/2146432

Title:
  glance download fails after BackendGroupConfiguration patch

Status in Glance:
  New
Status in glance package in Ubuntu:
  Confirmed

Bug description:
  After this patch:

  https://review.opendev.org/c/openstack/glance_store/+/973589

  doing "openstack image save" or "glance image-download" fails on my
  setup:

  # glance image-download 4da44979-b838-4e31-9f71-06577fa33155 >debian-13-generic-amd64-daily.qcow2
  Unable to download image '4da44979-b838-4e31-9f71-06577fa33155'. (HTTP HTTPInternalServerError)

  The glance-api.log is then:

    File "/usr/lib/python3/dist-packages/eventlet/wsgi.py", line 620, in handle_one_response
      result = self.application(self.environ, start_response)
    File "/usr/lib/python3/dist-packages/paste/urlmap.py", line 211, in __call__
      return app(environ, start_response)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
      return self.func(req, *args, **kwargs)
             ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/oslo_middleware/base.py", line 152, in __call__
      response = req.get_response(self.application)
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
      status, headers, app_iter = self.call_application(
                                  ~~~~~~~~~~~~~~~~~~~~~^
          application, catch_exc_info=False)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
      return self.func(req, *args, **kwargs)
             ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/oslo_middleware/base.py", line 152, in __call__
      response = req.get_response(self.application)
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
      status, headers, app_iter = self.call_application(
                                  ~~~~~~~~~~~~~~~~~~~~~^
          application, catch_exc_info=False)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
      return self.func(req, *args, **kwargs)
             ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/glance/common/wsgi.py", line 780, in __call__
      response = req.get_response(self.application)
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
      status, headers, app_iter = self.call_application(
                                  ~~~~~~~~~~~~~~~~~~~~~^
          application, catch_exc_info=False)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
      return self.func(req, *args, **kwargs)
             ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/osprofiler/web.py", line 111, in __call__
      return request.get_response(self.application)
             ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
      status, headers, app_iter = self.call_application(
                                  ~~~~~~~~~~~~~~~~~~~~~^
          application, catch_exc_info=False)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
      return self.func(req, *args, **kwargs)
             ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/keystonemiddleware/auth_token/__init__.py", line 341, in __call__
      response = req.get_response(self._app)
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
      status, headers, app_iter = self.call_application(
                                  ~~~~~~~~~~~~~~~~~~~~~^
          application, catch_exc_info=False)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
      resp = self.call_func(req, *args, **kw)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 193, in call_func
      return self.func(req, *args, **kwargs)
             ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/glance/common/wsgi.py", line 780, in __call__
      response = req.get_response(self.application)
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1313, in send
      status, headers, app_iter = self.call_application(
                                  ~~~~~~~~~~~~~~~~~~~~~^
          application, catch_exc_info=False)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/webob/request.py", line 1278, in call_application
      app_iter = application(self.environ, start_response)
    File "/usr/lib/python3/dist-packages/paste/urlmap.py", line 211, in __call__
      return app(environ, start_response)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 143, in __call__
      return resp(environ, start_response)
    File "/usr/lib/python3/dist-packages/routes/middleware.py", line 153, in __call__
      response = self.app(environ, start_response)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 143, in __call__
      return resp(environ, start_response)
    File "/usr/lib/python3/dist-packages/webob/dec.py", line 143, in __call__
      return resp(environ, start_response)
  TypeError: 'ImageProxy' object is not callable

  Reverting https://review.opendev.org/c/openstack/glance_store/+/973589
  fixes the issue. Also this patch from abhishekk restors a working
  Glance:

  --- a/glance_store/_drivers/swift/store.py
  +++ b/glance_store/_drivers/swift/store.py
  @@ -488,6 +488,7 @@ def swift_retry_iter(resp_iter, length, store, location, manager):
                            store.backend_group).swift_store_retry_get_count
       else:
           rcount = store.conf.glance_store.swift_store_retry_get_count
  +    rcount = int(rcount or 0)
   
       while retries <= rcount:
           try:
  @@ -892,7 +893,8 @@ class BaseStore(driver.Store):
   
           location = location.store_location
           # initialize manager to receive valid connections
  -        allow_retry = glance_conf.swift_store_retry_get_count > 0
  +        retry_get_count = int(glance_conf.swift_store_retry_get_count or 0)
  +        allow_retry = retry_get_count > 0
           with self.get_manager(location, context,
                                 allow_reauth=allow_retry) as manager:
               (resp_headers, resp_body) = self._get_object(location,

  I believe it's going to be sent for review.

To manage notifications about this bug go to:
https://bugs.launchpad.net/glance/+bug/2146432/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list