Francesco Romani has uploaded a new change for review. Change subject: migration: don't inherit from threading.Thread ......................................................................
migration: don't inherit from threading.Thread To have one class which inherits from threading.Thread is bad practice. Better to have composition than inheritance. Change-Id: I1385121990a885584fce607ce12f40011e67973d Signed-off-by: Francesco Romani <from...@redhat.com> --- M vdsm/virt/migration.py 1 file changed, 37 insertions(+), 27 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/99/47399/1 diff --git a/vdsm/virt/migration.py b/vdsm/virt/migration.py index 4b9a2b9..78ea855 100644 --- a/vdsm/virt/migration.py +++ b/vdsm/virt/migration.py @@ -73,7 +73,7 @@ STALLED = 3 -class SourceThread(threading.Thread): +class SourceThread(object): """ A thread that takes care of migration on the source vdsm. """ @@ -112,10 +112,19 @@ self._last_error = None self._last_status = MigrationStatus.IN_PROGRESS self._progress = 0 - threading.Thread.__init__(self) self._migrationPrepared = threading.Event() self._migrationCanceled = threading.Event() self._monitorThread = None + self._destServer = None + + self._thread = threading.Thread(target=self._run) + self._thread.daemon = True + self._thread.start() + + def is_alive(self): + return self._thread.is_alive() + + isAlive = is_alive @property def hibernating(self): @@ -310,7 +319,7 @@ -1, -1) # int1, int2 raise e - def run(self): + def _run(self): try: startTime = time.time() self._setupVdsConnection() @@ -465,22 +474,27 @@ yield int(offset + base ** i) -class DowntimeThread(threading.Thread): +class DowntimeThread(object): def __init__(self, vm, downtime, steps): - super(DowntimeThread, self).__init__() - self._vm = vm self._downtime = downtime self._steps = steps + self._stop = threading.Event() + + self._thread = threading.Thread(target=self._run) + self._thread.daemon = True + self._thread.start() delay_per_gib = config.getint('vars', 'migration_downtime_delay') memSize = int(vm.conf['memSize']) self._wait = (delay_per_gib * max(memSize, 2048) + 1023) / 1024 - self.daemon = True + def stop(self): + self._vm.log.debug('stopping migration downtime thread') + self._stop.set() - def run(self): + def _run(self): self._vm.log.debug('migration downtime thread started (%i steps)', self._steps) @@ -490,10 +504,6 @@ self._set_downtime(self._downtime) self._vm.log.debug('migration downtime thread exiting') - - def stop(self): - self._vm.log.debug('stopping migration downtime thread') - self._stop.set() def _set_downtime_by_steps(self, max_downtime): for downtime in exponential_downtime(max_downtime, self._steps): @@ -509,30 +519,34 @@ self._vm._dom.migrateSetMaxDowntime(downtime, 0) -class MonitorThread(threading.Thread): +class MonitorThread(object): + _MIGRATION_MONITOR_INTERVAL = config.getint( 'vars', 'migration_monitor_interval') # seconds def __init__(self, vm, startTime): - super(MonitorThread, self).__init__() - self._stop = threading.Event() self._vm = vm self._startTime = startTime - self.daemon = True self.progress = 0 + self._stop = threading.Event() + + if self.enabled: + self._thread = threading.Thread(target=self._run) + self._thread.daemon = True + self._thread.start() + else: + self._vm.log.info('migration monitor thread disabled' + ' (monitoring interval set to 0)') @property def enabled(self): return MonitorThread._MIGRATION_MONITOR_INTERVAL > 0 - def run(self): - if self.enabled: - self.monitor_migration() - else: - self._vm.log.info('migration monitor thread disabled' - ' (monitoring interval set to 0)') + def stop(self): + self._vm.log.debug('stopping migration monitor thread') + self._stop.set() - def monitor_migration(self): + def _run(self): def update_progress(remaining, total): if remaining == 0 and total: return 100 @@ -595,7 +609,3 @@ self._vm.log.info('Migration Progress: %s seconds elapsed,' ' %s%% of data processed' % (timeElapsed / 1000, self.progress)) - - def stop(self): - self._vm.log.debug('stopping migration monitor thread') - self._stop.set() -- To view, visit https://gerrit.ovirt.org/47399 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1385121990a885584fce607ce12f40011e67973d Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Francesco Romani <from...@redhat.com> Gerrit-Reviewer: gerrit-hooks <automat...@ovirt.org> _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches