summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/tests/test_virt.py3
-rw-r--r--nova/virt/libvirt_conn.py2
2 files changed, 4 insertions, 1 deletions
diff --git a/nova/tests/test_virt.py b/nova/tests/test_virt.py
index 113632a0c..56a271365 100644
--- a/nova/tests/test_virt.py
+++ b/nova/tests/test_virt.py
@@ -23,7 +23,6 @@ from xml.dom.minidom import parseString as xml_to_dom
from nova import context
from nova import db
from nova import flags
-from nova import log as logging
from nova import test
from nova import utils
from nova.api.ec2 import cloud
@@ -70,11 +69,13 @@ class CacheConcurrencyTestCase(test.TestCase):
eventlet.sleep(0)
try:
self.assertFalse(done2.ready())
+ self.assertTrue('fname' in conn._image_sems)
finally:
wait1.send()
done1.wait()
eventlet.sleep(0)
self.assertTrue(done2.ready())
+ self.assertFalse('fname' in conn._image_sems)
def test_different_fname_concurrency(self):
"""Ensures that two different fname caches are concurrent"""
diff --git a/nova/virt/libvirt_conn.py b/nova/virt/libvirt_conn.py
index ecef7950a..69249ed57 100644
--- a/nova/virt/libvirt_conn.py
+++ b/nova/virt/libvirt_conn.py
@@ -539,6 +539,8 @@ class LibvirtConnection(object):
with LibvirtConnection._image_sems[fname]:
if not os.path.exists(base):
fn(target=base, *args, **kwargs)
+ if not LibvirtConnection._image_sems[fname].locked():
+ del LibvirtConnection._image_sems[fname]
if cow:
utils.execute('qemu-img create -f qcow2 -o '