We purposefully removed the ability to stop and aborted task from outside VDSM.
It is one of the many features VDSM had (and still has) that could corrupt you 
data center if abused.

On a related note, this is the time that the 1st rule of VDSM didn't apply!
This is one hell of a milestone!

----- Original Message -----
> From: "Lee Yarwood" <lyarw...@redhat.com>
> To: vdsm-devel@lists.fedorahosted.org
> Sent: Tuesday, July 17, 2012 11:45:46 AM
> Subject: Re: [vdsm] How should we handle aborted tasks? via engine, vdsClient 
> or both?
> 
> On 07/13/2012 02:53 PM, Lee Yarwood wrote:
> > Hello all,
> > 
> > I'm looking into the use case around an aborted task within vdsmd.
> > AFAICT both engine and vdsClient are unable to deal with an aborted
> > task
> > at present.
> > 
> > Within engine we call HSMStopTaskVDSCommand, this inturn calls
> > stopTask
> > supplying _only_ the task_guid. vdsClient also calls stopTask with
> > only
> > the task_guid argument.
> > 
> > Why does this matter? Well the only was you can kill an aborted
> > task is
> > by passing the force=True argument to the stop method of the task
> > object
> > itself. Without this the _incref method will throw a TaskAborted
> > exception and we will be unable to stop the task.
> > 
> > Could anyone give me some background on why this is the case before
> > I
> > start looking into exposing the force option up the stack to engine
> > and
> > vdsClient.
> > 
> > Relevant code snippets from task.py below.
> > 
> > Thanks in advance,
> > 
> > Lee
> > 
> > vdsm/storage/task.py
> > 
> > 1198     def stop(self, force=False):
> > 1199         self.log.debug("stopping in state %s (force %s)",
> > self.state, force)
> > 1200         self._incref(force)
> > 1201         try:
> > 1202             if self.state.isDone():
> > 1203                 self.log.debug("Task already stopped (%s),
> > ignoring", self.state)
> > 1204                 return
> > 1205             elif self.state.isRecovering() and not force and
> > (self.cleanPolicy == TaskCleanType.auto):
> > 1206                 self.log.debug("Task (%s) in recovery and
> > force is
> > false, ignoring", self.state)
> > 1207                 return
> > 1208
> > 1209             self._aborting = True
> > 1210             self._forceAbort = force
> > 1211         finally:
> > 1212             self._decref(force)
> > 
> >  959     def _incref(self, force=False):
> >  960         self.lock.acquire()
> >  961         try:
> >  962             if self.aborting() and (self._forceAbort or not
> >  force):
> >  963                 raise se.TaskAborted(unicode(self))
> >  964
> >  965             self.ref += 1
> >  966             ref = self.ref
> >  967             return ref
> >  968         finally:
> >  969             self.lock.release()
> > 
> 
> Bump, any thoughts? Apologies if this is a little ovirt-engine
> centric
> for the list.
> 
> Lee
> 
> --
> 
> Lee Yarwood
> Software Maintenance Engineer
> Red Hat UK Ltd
> 200 Fowler Avenue IQ Farnborough, Farnborough, Hants GU14 7JP
> 
> Registered in England and Wales under Company Registration No.
> 03798903
> Directors: Michael Cunningham (USA), Brendan Lane (Ireland), Matt
> Parson(USA), Charlie Peters (USA)
> 
> GPG fingerprint : A5D1 9385 88CB 7E5F BE64  6618 BCA6 6E33 F672 2D76
> 
> 
> _______________________________________________
> vdsm-devel mailing list
> vdsm-devel@lists.fedorahosted.org
> https://fedorahosted.org/mailman/listinfo/vdsm-devel
> 
_______________________________________________
vdsm-devel mailing list
vdsm-devel@lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/vdsm-devel

Reply via email to