diff options
| author | Ewan Mellor <ewan.mellor@citrix.com> | 2010-07-25 15:00:37 +0100 |
|---|---|---|
| committer | Ewan Mellor <ewan.mellor@citrix.com> | 2010-07-25 15:00:37 +0100 |
| commit | 1a53eaeed901f3c789ebdb867b73996ccac608c3 (patch) | |
| tree | cf3bbf0a06ba4c9966bda7188261868c165ec101 /nova/tests | |
| parent | 7050e7e49e8aad3ff3f5d0060c96ff97d9c2852f (diff) | |
Fix assertion "Someone released me too many times: too many tokens!" when more
than one process was running at the same time. This
was caused by the override of SharedPool.__new__ not stopping
ProcessPool.__init__ from being run whenever process.simple_execute is called.
When __init__ ran for the second time, the DeferredSemaphore was replaced,
and this meant that we ended up releasing a different semaphore to the one
that was acquired.
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/process_unittest.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/nova/tests/process_unittest.py b/nova/tests/process_unittest.py index 1c15b69a0..c96bb5913 100644 --- a/nova/tests/process_unittest.py +++ b/nova/tests/process_unittest.py @@ -120,3 +120,10 @@ class ProcessTestCase(test.TrialTestCase): pool2 = process.SharedPool() self.assert_(id(pool1) == id(pool2)) + def test_shared_pool_works_as_singleton(self): + d1 = process.simple_execute('sleep 1') + d2 = process.simple_execute('sleep 0.005') + # lp609749: would have failed with + # exceptions.AssertionError: Someone released me too many times: + # too many tokens! + return d1 |
