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

Bug#929734: marked as done (unblock: nova/18.1.0-6)



Your message dated Tue, 11 Jun 2019 22:13:58 +0200
with message-id <66a99a3f-e1d5-3dc3-b821-6d10e268c660@debian.org>
and subject line Re: Bug#929734: unblock: nova/18.1.0-6
has caused the Debian Bug report #929734,
regarding unblock: nova/18.1.0-6
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
929734: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=929734
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
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
diff -Nru nova-18.1.0/debian/changelog nova-18.1.0/debian/changelog
--- nova-18.1.0/debian/changelog	2019-03-07 17:24:19.000000000 +0100
+++ nova-18.1.0/debian/changelog	2019-05-29 14:56:05.000000000 +0200
@@ -1,3 +1,11 @@
+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.
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-03-07 17:24:19.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-03-07 17:24:19.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.

--- End Message ---
--- Begin Message ---
Hi

On 03-06-2019 09:22, Thomas Goirand wrote:
> unblock nova/18.1.0-6

Unblocked, thanks.

Paul

Attachment: signature.asc
Description: OpenPGP digital signature


--- End Message ---

Reply to: