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

Relevant code snippets from task.py below.

Thanks in advance,



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
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))
 965             self.ref += 1
 966             ref = self.ref
 967             return ref
 968         finally:
 969             self.lock.release()

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

Reply via email to