[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#929734: unblock: nova/18.1.0-6



On 5/29/19 9:49 PM, Thomas Goirand wrote:
> Package: release.debian.org
> Severity: normal
> User: release.debian.org@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 <zigo@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 <zigo@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 <zigo@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 <zigo@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.os@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:

Reply to: