[openstack-dev] [nova][manila] "latest" microversion considered dangerous
Alex Meade
mr.alex.meade at gmail.com
Fri Aug 28 13:32:33 UTC 2015
I don't know if this is really a big problem. IMO, even with microversions
you shouldn't be implementing things that aren't backwards compatible
within the major version. I thought the benefit of microversions is to know
if a given feature exists within the major version you are using. I would
consider a breaking change to be a major version bump. If we only do a
microversion bump for a backwards incompatible change then we are just
using microversions as major versions.
-Alex
On Fri, Aug 28, 2015 at 3:45 AM, Dmitry Tantsur <dtantsur at redhat.com> wrote:
> On 08/28/2015 09:34 AM, Valeriy Ponomaryov wrote:
>
>> Dmitriy,
>>
>> New tests, that cover new functionality already know which API version
>> they require. So, even in testing, it is not needed. All other existing
>> tests do not require API update.
>>
>
> Yeah, but you can't be sure that your change does not break the world,
> until you merge it and start updating tests. Probably it's not that
> important for projects who have their integration tests in-tree though..
>
>
>> So, I raise hand for restricting "latest".
>>
>> On Fri, Aug 28, 2015 at 10:20 AM, Dmitry Tantsur <dtantsur at redhat.com
>> <mailto:dtantsur at redhat.com>> wrote:
>>
>> On 08/27/2015 09:38 PM, Ben Swartzlander wrote:
>>
>> Manila recently implemented microversions, copying the
>> implementation
>> from Nova. I really like the feature! However I noticed that
>> it's legal
>> for clients to transmit "latest" instead of a real version number.
>>
>> THIS IS A TERRIBLE IDEA!
>>
>> I recommend removing support for "latest" and forcing clients to
>> request
>> a specific version (or accept the default).
>>
>>
>> I think "latest" is needed for integration testing. Otherwise you
>> have to update your tests each time new version is introduced.
>>
>>
>>
>> Allowing clients to request the "latest" microversion guarantees
>> undefined (and likely broken) behavior* in every situation where a
>> client talks to a server that is newer than it.
>>
>> Every client can only understand past and present API
>> implementation,
>> not future implementations. Transmitting "latest" implies an
>> assumption
>> that the future is not so different from the present. This
>> assumption
>> about future behavior is precisely what we don't want clients to
>> make,
>> because it prevents forward progress. One of the main reasons
>> microversions is a valuable feature is because it allows forward
>> progress by letting us make major changes without breaking old
>> clients.
>>
>> If clients are allowed to assume that nothing will change too
>> much in
>> the future (which is what asking for "latest" implies) then the
>> server
>> will be right back in the situation it was trying to get out of
>> -- it
>> can never change any API in a way that might break old clients.
>>
>> I can think of no situation where transmitting "latest" is
>> better than
>> transmitting the highest version that existed at the time the
>> client was
>> written.
>>
>> -Ben Swartzlander
>>
>> * Undefined/broken behavior unless the server restricts itself
>> to never
>> making any backward-compatiblity-breaking change of any kind.
>>
>>
>>
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe:
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> <
>> http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>>
>>
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe:
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe
>> >
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>>
>>
>> --
>> Kind Regards
>> Valeriy Ponomaryov
>> www.mirantis.com <http://www.mirantis.com>
>> vponomaryov at mirantis.com <mailto:vponomaryov at mirantis.com>
>>
>>
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe:
>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20150828/6adb87da/attachment.html>
More information about the OpenStack-dev
mailing list