Re: [openstack-dev] [nova] Maintaining backwards compatibility for RPC calls

2013-12-02 Thread Russell Bryant
tl;dr - live upgrades are hard.  oops.

On 11/27/2013 07:38 AM, Day, Phil wrote:
 I’m a bit confused about the expectations of a manager class to be able
 to receive and process messages from a previous RPC version.   I thought
 the objective was to always make changes such that the manage can
 process any previous version of the call  that could come from the last
 release,  For example Icehouse code should be able to receive any
 version that could be generated by a version of Havana.   Generally of
 course that means new parameters have to have a default value.
 
 I’m kind of struggling then to see why we’ve now removed, for example,
 the default values for example from terminate_instance() as part of
 moving to RPC version to 3.0:
 
 def terminate_instance(self, context, instance, bdms=None,
 reservations=None):
 
 def terminate_instance(self, context, instance, bdms, reservations):
 
 https://review.openstack.org/#/c/54493/
 
 Doesn’t this mean that you can’t deploy Icehouse (3.0) code into a
 Havana system but leave the RPC version pinned at Havana until all of
 the code has been updated ? 

Thanks for bringing this up.  We realized a problem with the way I had
done these patches after some of them had merged.

First, some history.  The first time we did some major rpc version
bumps, they were done exactly like I did them here. [1][2]

This approach allows live upgrades for CD based deployments.  It does
*not* allow live upgrades from N-1 to N releases.  We didn't bother
because we knew there were other reasons that N-1 to N live upgrades
would not work at that point.

When I did this patch series, I took the same approach.  I didn't
account for the fact that we were going to try to pull off allowing live
upgrades from Havana to Icehouse.  The patches only supported live
upgrades in a CD environment.

I need to go back and add a shim layer that can handle receiving the
latest version of messages sent by Havana to all APIs.

[1] https://review.openstack.org/#/c/12130/
[2] https://review.openstack.org/#/c/12131/

-- 
Russell Bryant

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


[openstack-dev] [nova] Maintaining backwards compatibility for RPC calls

2013-11-27 Thread Day, Phil
Hi Folks,

I'm a bit confused about the expectations of a manager class to be able to 
receive and process messages from a previous RPC version.   I thought the 
objective was to always make changes such that the manage can process any 
previous version of the call  that could come from the last release,  For 
example Icehouse code should be able to receive any version that could be 
generated by a version of Havana.   Generally of course that means new 
parameters have to have a default value.

I'm kind of struggling then to see why we've now removed, for example, the 
default values for example from terminate_instance() as part of moving to RPC 
version to 3.0:

def terminate_instance(self, context, instance, bdms=None, reservations=None):

def terminate_instance(self, context, instance, bdms, reservations):

https://review.openstack.org/#/c/54493/

Doesn't this mean that you can't deploy Icehouse (3.0) code into a Havana 
system but leave the RPC version pinned at Havana until all of the code has 
been updated ?

Phil
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [nova] Maintaining backwards compatibility for RPC calls

2013-11-27 Thread yunhong jiang
On Wed, 2013-11-27 at 12:38 +, Day, Phil wrote:
 Doesn’t this mean that you can’t deploy Icehouse (3.0) code into a
 Havana system but leave the RPC version pinned at Havana until all of
 the code has been updated ?  

I think it's because this change is for computer manager, not for
conductor or other service.

Thanks
--jyh


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev