[openstack-dev] sqlalchemy version regression

Thomas Goirand zigo at debian.org
Sun Sep 22 17:47:42 UTC 2013


On 09/22/2013 11:36 PM, Jeremy Stanley wrote:
> On 2013-09-22 23:00:26 +0800 (+0800), Thomas Goirand wrote:
>> I already mentioned in this list that we need to be compatible with
>> SQLAlchemy 0.8.x. However, I've seen both regressions happening in the
>> global-requirements.txt and in Ceilometer:
>>
>> SQLAlchemy>=0.7.8,<=0.7.99
>>
>> Please, do not add <=0.7.99, this breaks badly, and all of OpenStack
>> really needs to work with SQLAlchemy 0.8.x, which is already in Sid and
>> Debian testing!
>>
>> It'd be nice if it didn't go back and forth for a 2nd time.
> 
> Out of curiosity, I just did a pickaxe through the
> openstack/requirements Git repository and confirmed that we have
> never claimed support for SQLAlchemy 0.8.x at least back to its
> inception over a year ago (when we first started trying to get a
> consistent list of our dependencies across the entirety of
> OpenStack). Individual projects have gone with SQLAlchemy uncapped
> from time to time, but if they are to be co-installable then we need
> them limited to the intersection of what the individual projects
> support.

When a package has:

Depends: ${python:Depends}

then you try to build it with SQLAlchemy 0.7.x, then the following
happens after the build:

Depends: python-sqlalchemy (>= 0.7~), python-sqlalchemy (<< 0.8)

When building with sqlalchemy 0.8.x installed, you get:

Depends: python-sqlalchemy (>= 0.8~), python-sqlalchemy (<< 0.9)

So no, we cannot have different versions of sqlalchemy installed for
different project. However, if you build the whole of OpenStack with one
single version of SQLAlchemy (0.7.x or 0.8.x), then it does work
completely, including the various db-sync that we have. So in fact, what
we should do is just leave the distribution decide which version of
SQLAlchemy to use, and make sure that we are compatible with both. And
we currently are, since I raised the topic earlier, and that things have
been fixed. Adding such a restriction (eg: <<0.8) in different project
will only bring troubles with unit tests errors when parsing the
requirements.txt.

Once more, it is important to note that both Ubuntu 13.10 and Debian
Sid/Jessie both are using currently SQLAlchemy 0.8.x. In fact,
SQLAlchemy 0.8 has just migrated to Jessie (from Sid), together with the
whole of OpenStack grizzly (which I am very happy about, and for which I
would like to thanks Julien Cristau from the release team who fixed the
remaining package which was Alembic).

> Since we now have at least some integration testing on our global
> requirements list, I uploaded https://review.openstack.org/47745 to
> see what breaks (though unit tests for individual projects are not
> covered by this test and may also need fixing).

The errors we can see in the Jenkins jobs are:

die 333 'keystone did not start'

and the other one is an SSL error while trying to download
thrift-0.9.1.tar.gz (which I believe isn't relevant).

What's important here, is to understand that any error that we have with
SQLAlchemy 0.8.x should be considered as a bug, and should be addressed.
Otherwise, we'll have a big problem on both Ubuntu 13.10 and Debian.

If it was only down to me, I'd say put:

SQLAlchemy>=0.8.2,<=0.9

in all of our requirements.txt, so that we have something predictable.
Making a backport package of SQLAlchemy for Precise and Wheezy is
trivial and not a problem.

Cheers,

Thomas Goirand (zigo)




More information about the OpenStack-dev mailing list