[openstack-dev] [all] Deprecating exceptions

Akihiro Motoki amotoki at gmail.com
Mon Sep 22 15:59:27 UTC 2014


Regarding ceilometer client, we horizon team at least was not aware of
its deprecation.
It is not easy thta Horizon team is aware of such changes/warnings in
all integrated projects.
We might need some liaison from the integrated projects as other projects do.

Regarding client backward compatibilities, it raises another question.
How long should a client need to keep backward compatibility?
OpenStack integrated supports two past releases.
Is it enough a client supports the past supported releases and the
current development version?
It seems more clear criteria is required, but I cannot find a good
pointer for this topic.

Akihiro


On Tue, Sep 23, 2014 at 12:32 AM, Sean Dague <sean at dague.net> wrote:
> 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
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>



-- 
Akihiro Motoki <amotoki at gmail.com>



More information about the OpenStack-dev mailing list