On 5/29/19 9:49 PM, Thomas Goirand wrote: > Package: release.debian.org > Severity: normal > User: release.debian....@packages.debian.org > Usertags: unblock > > Dear release team, > Please unblock package nova 18.1.0-6. > > During normal operation, it may happen that nova-conductor doesn't > work as expected when requesting a (live) migration of a virtual > machine from one compute node to another. Indeed, some information > may be missing in the json object generated by nova-conductor, > leading to a HTTP 500 error. > > This patch fixes the mess if a VM gets into this broken state. > > I'm sorry if this isn't a full explanation of how things work, but > it'd be hard to get into the full details of how Nova works. Though > please trust me, this is an important patch that really needs to > be in Buster, and I have tested this patch with success in production. > > Cheers, > > Thomas Goirand (zigo) > > unblock nova/18.1.0-6
Hi, I just realized that Buster got a much lower version of nova: 18.1.0-2. Here's the new debdiff. The changes are still quite minimal, there's on top, only a fix for os-vif version (needed for smoother upgrades and to make sure we don't hit an upstream bug), and a fix for the serialconsole proxy startup. Please unblock nova. unblock nova/18.1.0-6
diff -Nru nova-18.1.0/debian/changelog nova-18.1.0/debian/changelog --- nova-18.1.0/debian/changelog 2019-02-06 18:04:27.000000000 +0100 +++ nova-18.1.0/debian/changelog 2019-05-29 14:56:05.000000000 +0200 @@ -1,3 +1,31 @@ +nova (2:18.1.0-6) unstable; urgency=medium + + * Add upstream patch to fix broken request_spec, which in certain cases lead + to breaking instance migration: + - Workaround_missing_RequestSpec.instance_group.uuid.patch + + -- Thomas Goirand <z...@debian.org> Wed, 29 May 2019 14:56:05 +0200 + +nova (2:18.1.0-5) unstable; urgency=medium + + * Revert using uwsgi for nova-api: this breaks the metadata server. + + -- Thomas Goirand <z...@debian.org> Thu, 07 Mar 2019 17:24:19 +0100 + +nova (2:18.1.0-4) unstable; urgency=medium + + * Use uwsgi for nova-api. + + -- Thomas Goirand <z...@debian.org> Fri, 01 Mar 2019 15:26:24 +0100 + +nova (2:18.1.0-3) unstable; urgency=medium + + * Also package the nova-serialproxy startup script/unit. + * Fix startup of nova-serialproxy. + * Accept only python3-os-vif (>= 1.11.1). + + -- Thomas Goirand <z...@debian.org> Tue, 19 Feb 2019 09:57:59 +0100 + nova (2:18.1.0-2) unstable; urgency=medium * Add fix-python3-compatibility-ceph.patch diff -Nru nova-18.1.0/debian/control nova-18.1.0/debian/control --- nova-18.1.0/debian/control 2019-02-06 18:04:27.000000000 +0100 +++ nova-18.1.0/debian/control 2019-05-29 14:56:05.000000000 +0200 @@ -62,7 +62,7 @@ python3-os-brick (>= 2.5.0), python3-os-service-types (>= 1.2.0), python3-os-traits (>= 0.4.0), - python3-os-vif (>= 1.7.0), + python3-os-vif (>= 1.11.1), python3-os-win (>= 3.0.0), python3-os-xenapi (>= 0.3.3), python3-oslo.cache (>= 1.26.0), @@ -622,7 +622,7 @@ python3-os-brick (>= 2.5.0), python3-os-service-types (>= 1.2.0), python3-os-traits (>= 0.4.0), - python3-os-vif (>= 1.7.0), + python3-os-vif (>= 1.11.1), python3-os-win (>= 3.0.0), python3-os-xenapi (>= 0.3.3), python3-oslo.cache (>= 1.26.0), diff -Nru nova-18.1.0/debian/nova-consoleproxy.nova-serialproxy.init.in nova-18.1.0/debian/nova-consoleproxy.nova-serialproxy.init.in --- nova-18.1.0/debian/nova-consoleproxy.nova-serialproxy.init.in 2019-02-06 18:04:27.000000000 +0100 +++ nova-18.1.0/debian/nova-consoleproxy.nova-serialproxy.init.in 2019-05-29 14:56:05.000000000 +0200 @@ -25,7 +25,7 @@ exit 0 fi fi -if ! [ "${NOVA_SERIAL_PROXY_START}" = "TRUE" ] ; then +if ! [ ""$(echo "${NOVA_SERIAL_PROXY_START}" | tr '[:upper:]' '[:lower:]') = "true" ] || [ "${NOVA_SERIAL_PROXY_START}" = "1" ] ; then # This is to prevent pkgos-gen-systemd-unit to exit if [ -z "${INIT_TEMPLATE}" ] ; then exit 0 diff -Nru nova-18.1.0/debian/patches/revert-restore-async-keyword.patch nova-18.1.0/debian/patches/revert-restore-async-keyword.patch --- nova-18.1.0/debian/patches/revert-restore-async-keyword.patch 2019-02-06 18:04:27.000000000 +0100 +++ nova-18.1.0/debian/patches/revert-restore-async-keyword.patch 2019-05-29 14:56:05.000000000 +0200 @@ -6,11 +6,11 @@ Forwarded: not-needed Last-Update: 2018-09-25 -diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py -index a67747e408..59f0a8c292 100644 ---- a/nova/db/sqlalchemy/api.py -+++ b/nova/db/sqlalchemy/api.py -@@ -202,7 +202,7 @@ def select_db_reader_mode(f): +Index: nova/nova/db/sqlalchemy/api.py +=================================================================== +--- nova.orig/nova/db/sqlalchemy/api.py ++++ nova/nova/db/sqlalchemy/api.py +@@ -204,7 +204,7 @@ def select_db_reader_mode(f): use_slave = keyed_args.get('use_slave', False) if use_slave: diff -Nru nova-18.1.0/debian/patches/series nova-18.1.0/debian/patches/series --- nova-18.1.0/debian/patches/series 2019-02-06 18:04:27.000000000 +0100 +++ nova-18.1.0/debian/patches/series 2019-05-29 14:56:05.000000000 +0200 @@ -3,3 +3,4 @@ remove-crashing-blockdiag-doc-line.patch revert-restore-async-keyword.patch fix-python3-compatibility-ceph.patch +Workaround_missing_RequestSpec.instance_group.uuid.patch diff -Nru nova-18.1.0/debian/patches/Workaround_missing_RequestSpec.instance_group.uuid.patch nova-18.1.0/debian/patches/Workaround_missing_RequestSpec.instance_group.uuid.patch --- nova-18.1.0/debian/patches/Workaround_missing_RequestSpec.instance_group.uuid.patch 1970-01-01 01:00:00.000000000 +0100 +++ nova-18.1.0/debian/patches/Workaround_missing_RequestSpec.instance_group.uuid.patch 2019-05-29 14:56:05.000000000 +0200 @@ -0,0 +1,45 @@ +Author: Matt Riedemann <mriedem...@gmail.com> +Date: Tue, 28 May 2019 11:24:11 -0400 +Subject: [PATCH] Workaround missing RequestSpec.instance_group.uuid + It's clear that we could have a RequestSpec.instance_group + without a uuid field if the InstanceGroup is set from the + _populate_group_info method which should only be used for + legacy translation of request specs using legacy filter + properties dicts. + . + To workaround the issue, we look for the group scheduler hint + to get the group uuid before loading it from the DB. + . + The related functional regression recreate test is updated + to show this solves the issue. +Change-Id: I20981c987549eec40ad9762e74b0db16e54f4e63 +Closes-Bug: #1830747 +Origin: upstream, https://review.opendev.org/#/c/661786 +Last-Update: 2019-05-29 + +Index: nova/nova/objects/request_spec.py +=================================================================== +--- nova.orig/nova/objects/request_spec.py ++++ nova/nova/objects/request_spec.py +@@ -225,6 +225,8 @@ class RequestSpec(base.NovaObject): + policies = list(filter_properties.get('group_policies')) + hosts = list(filter_properties.get('group_hosts')) + members = list(filter_properties.get('group_members')) ++ # TODO(mriedem): We could try to get the group uuid from the ++ # group hint in the filter_properties. + self.instance_group = objects.InstanceGroup(policy=policies[0], + hosts=hosts, + members=members) +@@ -502,6 +504,12 @@ class RequestSpec(base.NovaObject): + spec._context = context + + if 'instance_group' in spec and spec.instance_group: ++ # NOTE(mriedem): We could have a half-baked instance group with no ++ # uuid if some legacy translation was performed on this spec in the ++ # past. In that case, try to workaround the issue by getting the ++ # group uuid from the scheduler hint. ++ if 'uuid' not in spec.instance_group: ++ spec.instance_group.uuid = spec.get_scheduler_hint('group') + # NOTE(danms): We don't store the full instance group in + # the reqspec since it would be stale almost immediately. + # Instead, load it by uuid here so it's up-to-date. diff -Nru nova-18.1.0/debian/rules nova-18.1.0/debian/rules --- nova-18.1.0/debian/rules 2019-02-06 18:04:27.000000000 +0100 +++ nova-18.1.0/debian/rules 2019-05-29 14:56:05.000000000 +0200 @@ -183,6 +183,7 @@ dh_installinit --name=nova-novncproxy dh_installinit --name=nova-spicehtml5proxy dh_installinit --name=nova-xenvncproxy + dh_installinit --name=nova-serialproxy install -D -m 0644 $(CURDIR)/debian/nova-consoleproxy.mydefault $(CURDIR)/debian/nova-consoleproxy/usr/share/nova-consoleproxy/default override_dh_python3: