return self._cleanups(raise_errors=raise_first) TypeError with fixtures 1.3.0 released on 6/29

Bug #1469825 reported by Matt Riedemann
18
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Rally
Fix Released
Medium
Unassigned
tempest
Fix Released
Critical
Matthew Treinish

Bug Description

Found here:

http://logs.openstack.org/31/193831/1/gate/gate-tempest-python34/7375aa3/console.html#_2015-06-29_10_01_06_102

2015-06-29 10:01:06.102 | Captured traceback:
2015-06-29 10:01:06.102 | ~~~~~~~~~~~~~~~~~~~
2015-06-29 10:01:06.102 | Traceback (most recent call last):
2015-06-29 10:01:06.102 | File "/home/jenkins/workspace/gate-tempest-python34/.tox/py34/lib/python3.4/site-packages/fixtures/fixture.py", line 124, in cleanUp
2015-06-29 10:01:06.103 | return self._cleanups(raise_errors=raise_first)
2015-06-29 10:01:06.103 | TypeError: 'NoneType' object is not callable

Seems to be spiking since 6/29 in multiple projects, so I'm assuming it's a problem in the latest fixtures 1.3.0 release that came out today:

http://logstash.openstack.org/#eyJzZWFyY2giOiJtZXNzYWdlOlwicmV0dXJuIHNlbGYuX2NsZWFudXBzKHJhaXNlX2Vycm9ycz1yYWlzZV9maXJzdClcIiBBTkQgdGFnczpcImNvbnNvbGVcIiIsImZpZWxkcyI6W10sIm9mZnNldCI6MCwidGltZWZyYW1lIjoiNjA0ODAwIiwiZ3JhcGhtb2RlIjoiY291bnQiLCJ0aW1lIjp7InVzZXJfaW50ZXJ2YWwiOjB9LCJzdGFtcCI6MTQzNTYwMDgzNTE5MiwibW9kZSI6IiIsImFuYWx5emVfZmllbGQiOiIifQ==

https://pypi.python.org/pypi/fixtures/1.3.0

Revision history for this message
Matt Riedemann (mriedem) wrote :

Looks like this is probably the change that introduced the issue:

https://github.com/testing-cabal/fixtures/commit/354acf568aa86bb7d43a01c23d73c750f601b335

no longer affects: openstack-gate
Revision history for this message
Robert Collins (lifeless) wrote :

This is because the tempest tests are cleaning up a fixture that was owned by the test (useFixture) by hand.

Then when useFixtures own addCleanup triggers calling fixture.cleanUp, the cleaned fixture is cleaned again - which now triggers an error. Previously there was a bug where:

f = Fixture()
try:
   f.cleanUp() # ERROR - ok sure
except:
  pass
f.setUp()
f.cleanUp()
f.cleanUp () # WTF no error

would work.

Changed in tempest:
assignee: nobody → Matthew Treinish (treinish)
status: New → In Progress
Matt Riedemann (mriedem)
Changed in tempest:
importance: Undecided → High
Changed in tempest:
importance: High → Critical
Changed in tempest:
status: In Progress → Fix Released
Changed in rally:
status: New → Fix Committed
milestone: none → 0.1.0
Changed in rally:
importance: Undecided → Medium
Changed in rally:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.