rpc versioning is not done in a way compatible with rolling upgrades

Bug #1317300 reported by aeva black
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ironic
Fix Released
Medium
Lucas Alvares Gomes

Bug Description

At the moment, ironic's rpcapi module is specifying a target (minimum)
RPC version of 1.0 -- however, none of the methods added after 1.0
indicate in which minor version they were added. Thus, this module
believes all methods are available in any version of the server greater
than 1.0, which is clearly untrue. They're all available in the _current_
version.

Additionally, certain rpcapi version changes prior to 1.15 included
backwards-incompatible changes and were allowed in anyway, because
they were early in Ironic's evolution.

After reading
http://docs.openstack.org/developer/oslo.messaging/target.html#target-versions
I'm fairly sure that we're currently Doing It Wrong. As the project is growing up,
it's time we start Doing It Right. So ...

Nova uses a much more sophisticated approach to versioning RPC on the
client side with both a min and max version, including specifying the minor
version that a method was added in, so the client knows not to send it
to servers with a minor version less than that.

I think we should do something similar (if not the same), starting with pinning
the minimum RPC version supported by the client to 1.15, and then go on to add
proper version tagging on future methods, and enforcing a policy of
non-backwards-incompatible changes to existing methods without a major version bump.

aeva black (tenbrae)
Changed in ironic:
importance: Undecided → Medium
status: New → Triaged
Revision history for this message
aeva black (tenbrae) wrote :
description: updated
Changed in ironic:
assignee: nobody → Ruby Loo (rloo)
status: Triaged → In Progress
Ruby Loo (rloo)
Changed in ironic:
assignee: Ruby Loo (rloo) → nobody
assignee: nobody → Devananda van der Veen (devananda)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (master)

Reviewed: https://review.openstack.org/92723
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=e7c5a4eb674e32e2f9393cc748bc8fd464e51772
Submitter: Jenkins
Branch: master

commit e7c5a4eb674e32e2f9393cc748bc8fd464e51772
Author: Devananda van der Veen <email address hidden>
Date: Wed May 7 15:52:53 2014 -0700

    Pin RPC client version min == max

    At the moment, ironic's rpcapi module is specifying a target (minimum)
    RPC version of 1.0 -- however, none of the methods added after 1.0
    indicate in which minor version they were added. Thus, this module
    believes all methods are available in any version of the server greater
    than 1.0, which is clearly untrue.

    This change pins the target version to the current version,
    effectively preventing rolling upgrades, which are not supported at the
    moment anyway.

    Change-Id: I031ccd13d1d140821daf8a0adf5913627064451c
    Partial-Bug: #1317300

Changed in ironic:
assignee: Devananda van der Veen (devananda) → Lucas Alvares Gomes (lucasagomes)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic (master)

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

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

Reviewed: https://review.openstack.org/94379
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=ec72bfa7897e79bdc5e437ca3d0dd9aeeaecc733
Submitter: Jenkins
Branch: master

commit ec72bfa7897e79bdc5e437ca3d0dd9aeeaecc733
Author: Lucas Alvares Gomes <email address hidden>
Date: Tue May 20 11:52:34 2014 +0100

    Set the correct target versions for the RPC methods

    This patch sets the correct target versions for the RPC methods in
    the RPC API. This is a first step towards being able to enable rolling
    upgrades for Ironic.

    Partial-Bug: #1317300
    Change-Id: I67ce731731c38e48b4f3180a423cbc18a3728903

Changed in ironic:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in ironic:
milestone: none → juno-3
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in ironic:
milestone: juno-3 → 2014.2
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.