From 477570a9747b0c7c7d61f0aab7b9f2bdeae711f1 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Wed, 18 Mar 2020 12:54:16 -0400 Subject: [PATCH] qa/workunits/rbd: use context managers to control Rados lifespan There is a potential race between the expected exceptions being thrown and Python shutting down racing with librados background threads. Ensure that librados is properly shut down prior to exiting Python. Signed-off-by: Jason Dillaman --- qa/workunits/rbd/permissions.sh | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/qa/workunits/rbd/permissions.sh b/qa/workunits/rbd/permissions.sh index 68144d2b940..f8a9aaa7128 100755 --- a/qa/workunits/rbd/permissions.sh +++ b/qa/workunits/rbd/permissions.sh @@ -168,12 +168,11 @@ create_self_managed_snapshot() { cat << EOF | CEPH_ARGS="-k $KEYRING" python3 import rados -cluster = rados.Rados(conffile="", rados_id="${ID}") -cluster.connect() -ioctx = cluster.open_ioctx("${POOL}") +with rados.Rados(conffile="", rados_id="${ID}") as cluster: + ioctx = cluster.open_ioctx("${POOL}") -snap_id = ioctx.create_self_managed_snap() -print ("Created snap id {}".format(snap_id)) + snap_id = ioctx.create_self_managed_snap() + print ("Created snap id {}".format(snap_id)) EOF } @@ -184,19 +183,17 @@ remove_self_managed_snapshot() { cat << EOF | CEPH_ARGS="-k $KEYRING" python3 import rados -cluster1 = rados.Rados(conffile="", rados_id="mon_write") -cluster1.connect() -ioctx1 = cluster1.open_ioctx("${POOL}") +with rados.Rados(conffile="", rados_id="mon_write") as cluster1, \ + rados.Rados(conffile="", rados_id="${ID}") as cluster2: + ioctx1 = cluster1.open_ioctx("${POOL}") -snap_id = ioctx1.create_self_managed_snap() -print ("Created snap id {}".format(snap_id)) + snap_id = ioctx1.create_self_managed_snap() + print ("Created snap id {}".format(snap_id)) -cluster2 = rados.Rados(conffile="", rados_id="${ID}") -cluster2.connect() -ioctx2 = cluster2.open_ioctx("${POOL}") + ioctx2 = cluster2.open_ioctx("${POOL}") -ioctx2.remove_self_managed_snap(snap_id) -print ("Removed snap id {}".format(snap_id)) + ioctx2.remove_self_managed_snap(snap_id) + print ("Removed snap id {}".format(snap_id)) EOF } -- 2.39.5