python3 + Fedora + SSL + wsgi nova deployment, nova api returns RecursionError: maximum recursion depth exceeded while calling a Python object
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
Undecided
|
Matthew Booth | ||
Ubuntu Cloud Archive |
Fix Released
|
High
|
Unassigned | ||
Stein |
Fix Released
|
High
|
Unassigned | ||
tripleo |
Incomplete
|
High
|
Unassigned | ||
nova (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Disco |
Fix Released
|
High
|
Unassigned | ||
Eoan |
Fix Released
|
High
|
Unassigned |
Bug Description
Description:-
So while testing python3 with Fedora in [1], Found an issue while running nova-api behind wsgi. It fails with below Traceback:-
2018-12-18 07:41:55.364 26870 INFO nova.api.
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack [req-e1af4808-
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack Traceback (most recent call last):
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack return req.get_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack application, catch_exc_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack app_iter = application(
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack resp = self.call_func(req, *args, **kw)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack return self.func(req, *args, **kwargs)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack self._log_req(req, res, start)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack self.force_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack six.reraise(
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack raise value
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack res = req.get_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack application, catch_exc_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack app_iter = application(
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack return resp(environ, start_response)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack resp = self.call_func(req, *args, **kw)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack return self.func(req, *args, **kwargs)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack return request.
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack application, catch_exc_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack app_iter = application(
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack resp = self.call_func(req, *args, **kw)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack return self.func(req, *args, **kwargs)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack response = self.process_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack resp = super(AuthProtocol, self).process_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack allow_expired=
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack data = self.fetch_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack allow_expired=
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack auth_ref = self._request_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack strategy_class = self._get_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack if self._adapter.
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack return self.session.
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack return auth.get_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack allow_version_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack service_catalog = self.get_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack self.auth_ref = self.get_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack self._plugin = self._do_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack authenticated=
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack authenticated=
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack disc = Discover(session, url, authenticated=
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack authenticated=
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack resp = session.get(url, headers=headers, authenticated=
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack return self.request(url, 'GET', **kwargs)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack resp = send(**kwargs)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack resp = self.session.
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack resp = self.send(prep, **send_kwargs)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack r = adapter.
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack timeout=timeout
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack chunked=chunked)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack self._validate_
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack conn.connect()
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack cert_reqs=
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack context.options |= options
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib64/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack super(SSLContext, SSLContext)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib64/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack super(SSLContext, SSLContext)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack File "/usr/lib64/
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack super(SSLContext, SSLContext)
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack [Previous line repeated 280 more times]
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack RecursionError: maximum recursion depth exceeded while calling a Python object
2018-12-18 07:41:55.364 26870 ERROR nova.api.openstack
2018-12-18 07:41:55.371 26870 INFO nova.api.openstack [req-e1af4808-
Environment Details:-
OS: Fedora 28
python: 3.6.7
eventlet: 0.24.1
The issue is around using of eventlet.
Expected result
===============
Nova api should response successfully.
Actual result
=============
Nova api returns Recursion Error.
[1] https:/
[2] https:/
[3] https:/
-------
Ubuntu SRU Details
[Impact]
Please see description above.
[Test Case]
* Deploy OpenStack Stein with tls endpoints
* Attempt to interact with nova api (list flavors for example)
https:/
[Regression Potential]
There is certainly regression potential with this patch as it is not a trivial change. The patch has landed in the upstream master branch which is now train, which means it has received iterative reviews and final approval from upstream reviewers and passed gate testing. The patch has not yet landed in the upstream stable/stein but does have one core reviewer's +2 and has passed zuul tests with a +1. The patch has been tested locally and confirmed to fix nova+wsgi+py3+SSL in initial Ubuntu testing. Without this change that combination is broken for Ubuntu Stein.
tags: | added: api |
Changed in nova: | |
assignee: | nobody → Matthew Booth (mbooth-9) |
status: | New → In Progress |
Changed in tripleo: | |
milestone: | stein-3 → stein-rc1 |
tags: | added: stein-rc-potential |
Changed in tripleo: | |
milestone: | stein-rc1 → train-1 |
Changed in nova (Ubuntu Disco): | |
status: | New → Triaged |
importance: | Undecided → High |
Changed in nova (Ubuntu Eoan): | |
status: | New → Confirmed |
status: | Confirmed → Triaged |
importance: | Undecided → High |
description: | updated |
description: | updated |
description: | updated |
Changed in tripleo: | |
milestone: | train-1 → train-2 |
tags: | added: py3 |
tags: |
added: verification-done removed: verification-needed |
Changed in tripleo: | |
milestone: | train-2 → train-3 |
Changed in tripleo: | |
milestone: | train-3 → ussuri-1 |
Changed in tripleo: | |
milestone: | ussuri-1 → ussuri-2 |
Changed in tripleo: | |
milestone: | ussuri-2 → ussuri-3 |
Changed in tripleo: | |
status: | Triaged → Incomplete |
Changed in tripleo: | |
milestone: | ussuri-3 → ussuri-rc3 |
Changed in tripleo: | |
milestone: | ussuri-rc3 → victoria-1 |
Changed in tripleo: | |
milestone: | victoria-1 → victoria-3 |
Related fix proposed to branch: master /review. openstack. org/626952
Review: https:/