rolling update logic compares str(template)

Bug #1271397 reported by Christopher Armstrong
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Heat
Fix Released
Undecided
Christopher Armstrong

Bug Description

When the rolling update code determines which instances are "being updated" (and thus need temporarily removed from the load balancer), it tries to compare the str() of a template dict. Unfortunately, str() of dicts in Python does not have a reliable ordering, so this logic can erroneously determine that some instances are being updated when they are not.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (master)

Fix proposed to branch: master
Review: https://review.openstack.org/68311

Changed in heat:
assignee: nobody → Christopher Armstrong (radix)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (master)

Reviewed: https://review.openstack.org/68311
Committed: https://git.openstack.org/cgit/openstack/heat/commit/?id=d3d4c72a0291412348c4d9d55b038e67ad30e2ba
Submitter: Jenkins
Branch: master

commit d3d4c72a0291412348c4d9d55b038e67ad30e2ba
Author: Christopher Armstrong <email address hidden>
Date: Wed Jan 22 03:22:43 2014 +0000

    Make LB-updating in rolling update more reliable

    The rolling update code updates the load balancer when instances
    are being updated (and thus out of service). It determines which instances
    are being changed by comparing the str() of the templates. Unfortunately,
    str() of dicts in Python returns keys in an unreliable order, depending on
    the way the dicts were constructed. Therefore, sometimes rolling updates
    would erroneously determine that instances were changing when they were not,
    and take them out of service in the load balancer.

    This patch contains no additional tests because it's not really possible to
    reliably reproduce this across multiple platforms. Existing tests will fail if
    the erroneous case is triggered.

    Change-Id: Icb564a65ca118a2fc84d7df8c44330281074bbb7
    Closes-Bug: #1271397

Changed in heat:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in heat:
milestone: none → icehouse-3
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in heat:
milestone: icehouse-3 → 2014.1
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.