[Bug 1817055] Re: Broken dependency when setting swift-proxy on Bionic

Brian Murray brian at ubuntu.com
Tue Mar 5 18:57:47 UTC 2019


Hello Pedro, or anyone else affected,

Accepted python-eventlet into cosmic-proposed. The package will build
now and be available at https://launchpad.net/ubuntu/+source/python-
eventlet/0.20.0-5ubuntu0.18.10.1 in a few hours, and then in the
-proposed repository.

Please help us by testing this new package.  See
https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how
to enable and use -proposed.  Your feedback will aid us getting this
update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug,
mentioning the version of the package you tested and change the tag from
verification-needed-cosmic to verification-done-cosmic. If it does not
fix the bug for you, please add a comment stating that, and change the
tag to verification-failed-cosmic. In either case, without details of
your testing we will not be able to proceed.

Further information regarding the verification process can be found at
https://wiki.ubuntu.com/QATeam/PerformingSRUVerification .  Thank you in
advance for helping!

N.B. The updated package will be released to -updates after the bug(s)
fixed by this package have been verified and the package has been in
-proposed for a minimum of 7 days.

** Changed in: python-eventlet (Ubuntu Cosmic)
       Status: In Progress => Fix Committed

** Tags added: verification-needed verification-needed-cosmic

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

Title:
  Broken dependency when setting swift-proxy on Bionic

Status in OpenStack swift-proxy charm:
  Invalid
Status in python-eventlet package in Ubuntu:
  Fix Released
Status in python-eventlet source package in Bionic:
  Fix Committed
Status in python-eventlet source package in Cosmic:
  Fix Committed
Status in python-eventlet source package in Disco:
  Fix Released

Bug description:
  [Impact] 
  Swift proxy server will sometimes fail to start due to racy-ness in monkey patching by eventlet and daemon startup.  Swift dies, no object storage.

  [Test Case]
  Deploy swift using the reference bundles for deploying OpenStack with Juju and the OpenStack charms.
  Depending on the number of cores being used the stacktrace in the original bug report will be seen and swift-proxy will fail to startup.

  [Regression Potential] 
  The workaround fix to ensure that the eventlet hub is correctly initialised has been in the upstream codebase since 2017 so low potential for regression.

  [Original Bug Report]
  Charm options:
    swift-proxy:
      charm: cs:swift-proxy
      num_units: 3
      bindings:
        "": *oam-space
        public: *public-space
        admin: *admin-space
        internal: *internal-space
        swift-storage: *swift-cluster-space
      options:
        openstack-origin: *openstack-origin
        vip: *swift-proxy-vip
        region: *openstack-region
        zone-assignment: manual
        partition-power: *partition-power
        workers: *workers
      to:
      - lxd:0
      - lxd:1
      - lxd:2

  Setting up swift-proxy on Bionic causes swift-proxy.service to fail at
  start with:

  Feb 21 11:16:07 juju-29125a-0-lxd-15 systemd[1]: Stopped LSB: Swift proxy server.
  Feb 21 11:16:07 juju-29125a-0-lxd-15 systemd[1]: swift-proxy.service: Failed to reset devices.list: Operation not permitted
  Feb 21 11:16:07 juju-29125a-0-lxd-15 systemd[1]: Starting LSB: Swift proxy server...
  Feb 21 11:16:07 juju-29125a-0-lxd-15 swift-proxy[41939]:  * Starting Swift Swift proxy server swift-init proxy-server
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]: Starting proxy-server...(/etc/swift/proxy-server.conf)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]: Traceback (most recent call last):
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/bin/swift-proxy-server", line 23, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     sys.exit(run_wsgi(conf_file, 'proxy-server', **options))
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 912, in run_wsgi
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     loadapp(conf_path, global_conf=global_conf)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 390, in loadapp
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     ctx = loadcontext(loadwsgi.APP, conf_file, global_conf=global_conf)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 374, in loadcontext
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     global_conf=global_conf)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 296, in loadcontext
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     global_conf=global_conf)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 320, in _loadconfig
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     return loader.get_context(object_type, name, global_conf)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 66, in get_context
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     object_type, name=name, global_conf=global_conf)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 450, in get_context
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     global_additions=global_additions)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 562, in _pipeline_app_context
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     for name in pipeline[:-1]]
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 66, in get_context
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     object_type, name=name, global_conf=global_conf)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 458, in get_context
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     section)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 517, in _context_from_explicit
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     value = import_string(found_expr)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 22, in import_string
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     return pkg_resources.EntryPoint.parse("x=" + s).load(False)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2324, in load
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     return self.resolve()
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2330, in resolve
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     module = __import__(self.module_name, fromlist=['__name__'], level=0)
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py", line 221, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from keystoneauth1 import adapter
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/keystoneauth1/adapter.py", line 16, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from keystoneauth1 import session
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/keystoneauth1/session.py", line 40, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     import osprofiler.web as osprofiler_web
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/osprofiler/web.py", line 20, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from osprofiler import profiler
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/osprofiler/profiler.py", line 26, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from osprofiler import notifier
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/osprofiler/notifier.py", line 16, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from osprofiler.drivers import base
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/osprofiler/drivers/__init__.py", line 4, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from osprofiler.drivers import loginsight  # noqa
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/osprofiler/drivers/loginsight.py", line 24, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from oslo_concurrency.lockutils import synchronized
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py", line 27, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     import fasteners
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/fasteners/__init__.py", line 23, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from fasteners.lock import locked  # noqa
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/fasteners/lock.py", line 24, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from fasteners import _utils
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/fasteners/_utils.py", line 22, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     from monotonic import monotonic as now  # noqa
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:   File "/usr/lib/python2.7/dist-packages/monotonic.py", line 164, in <module>
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:     raise RuntimeError('no suitable implementation for this system')
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]: RuntimeError: no suitable implementation for this system
  Feb 21 11:16:08 juju-29125a-0-lxd-15 swift-proxy[41939]:    ...fail!
  Feb 21 11:16:08 juju-29125a-0-lxd-15 systemd[1]: Started LSB: Swift proxy server.

  Looking at errors for monotonic lib, I can find other references around github:
  https://github.com/nameko/nameko/issues/533
  https://github.com/eventlet/eventlet/issues/401

  Swift-proxy indeed depends on eventlet:
  root at juju-29125a-0-lxd-15:~# dpkg -l | grep eventlet
  ii  python-eventlet                0.20.0-4                                     all          concurrent networking library - Python 2.x

  And then the issue described at:
  https://github.com/eventlet/eventlet/issues/401 applies.

  Moving back to Xenial seems to stabilize swift proxy.

To manage notifications about this bug go to:
https://bugs.launchpad.net/charm-swift-proxy/+bug/1817055/+subscriptions



More information about the Ubuntu-openstack-bugs mailing list