From: Jason Dillaman Date: Wed, 18 Mar 2020 16:54:16 +0000 (-0400) Subject: qa/workunits/rbd: use context managers to control Rados lifespan X-Git-Tag: v15.2.0~20^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F34035%2Fhead;p=ceph.git 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 --- diff --git a/qa/workunits/rbd/permissions.sh b/qa/workunits/rbd/permissions.sh index 68144d2b9402..f8a9aaa7128e 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 }