[openstack-dev] [all] Deprecating exceptions

Sean Dague sean at dague.net
Mon Sep 22 15:32:34 UTC 2014


On 09/22/2014 11:24 AM, Ihar Hrachyshka wrote:
> On 22/09/14 17:07, Radomir Dopieralski wrote:
>> Horizon's tests were recently broken by a change in the Ceilometer 
>> client that removed a deprecated exception. The exception was
>> deprecated for a while already, but as it often is, nobody did the 
>> work of removing all references to it from Horizon before it was
>> too late. Sure, in theory we should all be reading the release
>> notes of all versions of all dependencies and acting upon things
>> like this. In practice, if there is no warning generated in the
>> unit tests, nobody is going to do anything about it.
> 
>> So I sat down and started thinking about how to best generate a
>> warning when someone is trying to catch a deprecated exception. I
>> came up with this code:
> 
>> http://paste.openstack.org/show/114170/
> 
>> It's not pretty -- it is based on the fact that the `except`
>> statement has to do a subclass check on the exceptions it is
>> catching. It requires a metaclass and a class decorator to work,
>> and it uses a global variable. I'm sure it would be possible to do
>> it in a little bit cleaner way. But at least it gives us the
>> warning (sure, only if an exception is actually being thrown, but
>> that's test coverage problem).
> 
>> I propose to do exception deprecating in this way in the future.
> 
> 
> Aren't clients supposed to be backwards compatible? Isn't it the exact
> reason why we don't maintain stable branches for client modules?
> 
> So, another reason to actually start maintaining those stable branches
> for clients. We already do it in RDO (Red Hat backed Openstack
> distribution) anyway.

I think the real question is how much warning was given on the removal
of the exception. Was there a release out for 6 months with the
deprecation? That's about our normal time for delete threshold.
Honestly, I have no idea.

If ceilometer client did the right thing and gave enough deprecation
time before the remove, it's an issue about why horizon didn't respond
to the deprecation sooner.

	-Sean

-- 
Sean Dague
http://dague.net

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 482 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140922/2a85c457/attachment.pgp>


More information about the OpenStack-dev mailing list