From 7c6d645a0a0fe12e27d6ce5eb8b69d42320a7553 Mon Sep 17 00:00:00 2001 From: Bob Lantz Date: Thu, 22 Oct 2015 16:33:21 -0700 Subject: [PATCH] Workaround for cgdelete deleting cgroup but returning error fixes #513 --- mininet/node.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mininet/node.py b/mininet/node.py index 349275d..c93fc1b 100644 --- a/mininet/node.py +++ b/mininet/node.py @@ -681,7 +681,9 @@ class CPULimitedHost( Host ): "Clean up our cgroup" # info( '*** deleting cgroup', self.cgroup, '\n' ) _out, _err, exitcode = errRun( 'cgdelete -r ' + self.cgroup ) - return exitcode == 0 # success condition + # Sometimes cgdelete returns a resource busy error but still + # deletes the group; next attempt will give "no such file" + return exitcode == 0 or ( 'no such file' in _err.lower() ) def popen( self, *args, **kwargs ): """Return a Popen() object in node's namespace @@ -703,7 +705,7 @@ class CPULimitedHost( Host ): def cleanup( self ): "Clean up Node, then clean up our cgroup" super( CPULimitedHost, self ).cleanup() - retry( retries=3, delaySecs=1, fn=self.cgroupDel ) + retry( retries=3, delaySecs=.1, fn=self.cgroupDel ) _rtGroupSched = False # internal class var: Is CONFIG_RT_GROUP_SCHED set?