[openstack-dev] pyparsing 2.0 postmortem
Sean Dague
sdague at linux.vnet.ibm.com
Wed Feb 27 18:18:49 UTC 2013
After lots of running around this morning, we've got a new
python-quantumclient v.2.1.2 that fixes OpenStack CI. The gate merge was
only broken for 4 hours, before California woke up, so overall project
impact was pretty bad.
I think there are a couple lessons learned out of this, at least in my
opinion. As someone that's chased 2 big breaks like this in 2 days, I'd
like to figure out how we stop doing that. :)
1) python-FOOclients should release more often
All it takes is setting a tag on a python-FOOclient to generate a
release, CI does the push into pypi. We should be releasing early and
often here. This issue was known to be an issue back in December, which
is when the fix landed in the python-quantumclient tree, but because
there wasn't a python-quantumclient release it managed to be a gate blocker.
Release early, release often. clients don't need to be on the 6 month
cadence that the server projects are on, as clients should work with
multiple versions of the servers.
It's also probably worth making sure that all cores on a project known
and understand the python-client release process -
https://wiki.openstack.org/wiki/GerritJenkinsGithub#Tagging_a_Release
It's super easy, and should be doable at any time.
2) open ended requires are going to hurt us once we go to freeze.
We've had 3 breaks of our gate this week due to pip updates. Horizon due
to django, Glance due to jsonscheme, and Quantum Client due to
pyparsing. These typically break stable as well (I known the django one
did).
I've chased the gate fixes on 2 of these, it's definitely getting old. I
understand the desire to not artificially limit ourselves, but it feels
like once we get into freeze we should start capping these things. We
can keep them open in open development, but I think we need to start
clamping these down once we hit freeze.
3) order in pip-requires matters :)
The eventual fix for python-quantumclient was to bump cliff. There was
nothing wrong with cliff, but cliff depends on pyparsing as well, and
didn't specify strict version until 1.3.1. In reality this probably
wasn't even a needed change for the pypi package, but it did let it get
through our pip based pep8 scans.
The CI fix should really have been to move pyparsing up in the file to
install before cliff, and 1.2.1 would then still work.
Anyway, alternative thoughts are really appreciated. I realize point #2
is a little contentious, and there is also another thread on it. But
it's also no good to have git code stop working for people, and us to
not realize it until someone tries to merge code.
-Sean
--
Sean Dague
IBM Linux Technology Center
email: sdague at linux.vnet.ibm.com
alt-email: sldague at us.ibm.com
More information about the OpenStack-dev
mailing list