LGTM, thanks
On Wed, Jul 23, 2014 at 10:45:00AM +0200, 'Klaus Aehlig' via ganeti-devel wrote: > Move the release statement for the BGL to the finally block > enclosing the statement that acquired it. In this way, we are > sure to always eventually release the BGL. Also replace the > freeing request by a FreeLocksLevel request, which also cancels > all pending requests that still might exist. > > Signed-off-by: Klaus Aehlig <[email protected]> > --- > lib/mcpu.py | 29 ++++++++++++----------------- > 1 file changed, 12 insertions(+), 17 deletions(-) > > diff --git a/lib/mcpu.py b/lib/mcpu.py > index f08c3c9..db53ed3 100644 > --- a/lib/mcpu.py > +++ b/lib/mcpu.py > @@ -633,26 +633,21 @@ class Processor(object): > raise errors.ProgrammerError("Opcode '%s' requires BGL, but locks > are" > " disabled" % op.OP_ID) > > + lu = lu_class(self, op, self.context, self.cfg, self.rpc, > + self._wconfdcontext, self.wconfd) > + lu.wconfdlocks = self.wconfd.Client().ListLocks(self._wconfdcontext) > + lu.ExpandNames() > + assert lu.needed_locks is not None, "needed_locks not set by LU" > + > try: > - lu = lu_class(self, op, self.context, self.cfg, self.rpc, > - self._wconfdcontext, self.wconfd) > - lu.wconfdlocks = self.wconfd.Client().ListLocks(self._wconfdcontext) > - lu.ExpandNames() > - assert lu.needed_locks is not None, "needed_locks not set by LU" > - > - try: > - result = self._LockAndExecLU(lu, locking.LEVEL_CLUSTER + 1, > - calc_timeout) > - finally: > - if self._ec_id: > - self.cfg.DropECReservations(self._ec_id) > + result = self._LockAndExecLU(lu, locking.LEVEL_CLUSTER + 1, > + calc_timeout) > finally: > - # Release BGL if owned > - bglname = "%s/%s" % (locking.LEVEL_NAMES[locking.LEVEL_CLUSTER], > - locking.BGL) > - self.wconfd.Client().TryUpdateLocks(self._wconfdcontext, > - [[bglname, "release"]]) > + if self._ec_id: > + self.cfg.DropECReservations(self._ec_id) > finally: > + self.wconfd.Client().FreeLocksLevel( > + self._wconfdcontext, locking.LEVEL_NAMES[locking.LEVEL_CLUSTER]) > self._cbs = None > > self._CheckLUResult(op, result) > -- > 2.0.0.526.g5318336 >
