[openstack-dev] [nova][manila] "latest" microversion considered dangerous

Ben Swartzlander ben at swartzlander.org
Thu Aug 27 19:38:46 UTC 2015


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).

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.




More information about the OpenStack-dev mailing list