Dan Kenigsberg has posted comments on this change.

Change subject: executor: introduce the executor library
......................................................................


Patch Set 31:

(3 comments)

http://gerrit.ovirt.org/#/c/29191/31/lib/vdsm/executor.py
File lib/vdsm/executor.py:

Line 144:         self._scheduler = scheduler
Line 145:         self._busy = False
Line 146:         self._discarded = False
Line 147:         _Worker._id += 1
Line 148:         name = "Executor-%i" % _Worker._id
> Not sure what you sugget, but letting the executor set the name of the work
I was suggesting "executor-m-worker-n"; since multiple executors is not a big 
concern for us right now, I can do with "worker-n". "executor-n", as suggested 
in the code, is a confusing name for a worker.
Line 149:         self._thread = threading.Thread(target=self._run, name=name)
Line 150:         self._thread.daemon = True
Line 151:         self._log.debug('Starting worker %s' % name)
Line 152:         self._thread.start()


Line 154:     @property
Line 155:     def name(self):
Line 156:         return self._thread.name
Line 157: 
Line 158:     def join(self):
> We join when Executor.stop() is invoke with wait == True. This is the defau
usually, join() is called when you WANT to wait for a certain job to be done. 
That's pretty useful some times. I cannot find a use case for waiting only for 
threads that are doing nothing.
Line 159:         if self._busy:
Line 160:             raise _WorkerBusy()
Line 161:         self._log.debug('Waiting for worker %s', self.name)
Line 162:         self._thread.join()


Line 231:             except IndexError:
Line 232:                 with self._cond:
Line 233:                     self._waiters += 1
Line 234:                     if not self._tasks:
Line 235:                         self._cond.wait()
> The spurious wakeup bug is not related to multiple threads, but to wait ret
I forgot that wait() reacquires the mutex once woken up. There's no race here.

Can you explain why we need self._waiters? What if put() is called right before 
_waiters += 1? put() would skip the notify, and get() would end up waiting 
forever.
Line 236:                     self._waiters -= 1
Line 237: 
Line 238:     def clear(self):


-- 
To view, visit http://gerrit.ovirt.org/29191
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic06da1ba57868dc2c7db67a1868ad10087a1cff2
Gerrit-PatchSet: 31
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <[email protected]>
Gerrit-Reviewer: Antoni Segura Puimedon <[email protected]>
Gerrit-Reviewer: Dan Kenigsberg <[email protected]>
Gerrit-Reviewer: Dima Kuznetsov <[email protected]>
Gerrit-Reviewer: Federico Simoncelli <[email protected]>
Gerrit-Reviewer: Francesco Romani <[email protected]>
Gerrit-Reviewer: Michal Skrivanek <[email protected]>
Gerrit-Reviewer: Nir Soffer <[email protected]>
Gerrit-Reviewer: Saggi Mizrahi <[email protected]>
Gerrit-Reviewer: Vinzenz Feenstra <[email protected]>
Gerrit-Reviewer: Yaniv Bronhaim <[email protected]>
Gerrit-Reviewer: [email protected]
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
vdsm-patches mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches

Reply via email to