diff --git a/ironic/cmd/singleprocess.py b/ironic/cmd/singleprocess.py index 675bd1bc29..28100efe9b 100644 --- a/ironic/cmd/singleprocess.py +++ b/ironic/cmd/singleprocess.py @@ -46,12 +46,12 @@ def main(): conductor_cmd.issue_startup_warnings(CONF) launcher.launch_service(mgr) - wsgi = wsgi_service.WSGIService('ironic_api', CONF.api.enable_ssl_api) - launcher.launch_service(wsgi) - # NOTE(dtantsur): handling start-up failures before launcher.wait() helps # notify systemd about them. Otherwise the launcher will report successful # service start-up before checking the threads. mgr.wait_for_start() + wsgi = wsgi_service.WSGIService('ironic_api', CONF.api.enable_ssl_api) + launcher.launch_service(wsgi) + sys.exit(launcher.wait()) diff --git a/releasenotes/notes/allinone-4ca71f150a718811.yaml b/releasenotes/notes/allinone-4ca71f150a718811.yaml new file mode 100644 index 0000000000..e99091fe12 --- /dev/null +++ b/releasenotes/notes/allinone-4ca71f150a718811.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + The combined ``ironic`` executable now starts the API only after the + built-in conductor starts. This avoids error 500 on requests while + the conductor is starting.