def relogin(self, xmppuser, pending_jobs): len_pending_jobs = len(pending_jobs) self.log.info('RELOGIN %s. Pending_Jobs: %s. Data: %s', xmppuser.jid, len_pending_jobs, xmppuser) try: yield self._shared_login(xmppuser) running_client = KatooApp().getService(xmppuser.userid) self.log.info('RELOGIN %s. Running xmppclient: %s', xmppuser.jid, running_client) except XMPPUserAlreadyLogged: #If user is already logged xmppuser data is valid and we take it as xmppuser running_client = KatooApp().getService(xmppuser.userid) self.log.warning('RELOGIN %s. User Already logged taking user to perform RELOGIN process. Running xmppclient: %s', xmppuser.jid, running_client) xmppuser = running_client.user xmppuser.worker = xmppuser.userid try: xmppuser.onMigrationTime = Timer().utcnow() res = yield xmppuser.save() self.log.info('perform relogin %s. Enqueuing pending jobs %s before migration was launched. Data %s. Save result: %s', xmppuser.jid, len_pending_jobs, running_client, res) queue = Queue(conf.MACHINEID) #Enqueue pending jobs before migration was launched for job_id in pending_jobs: try: job = yield Job.fetch(job_id, queue.connection) yield queue.enqueue_job(job) except NoSuchJobError: pass self.log.info('perform relogin %s. Finished enqueuing pending jobs before migration was launched.', xmppuser.jid) self.log.info('perform relogin %s. Enqueing pending jobs after migration was launched.', xmppuser.jid) #Enqueue pending jobs after migration was launched migration_queue = Queue(xmppuser.userid) migration_job_ids = yield migration_queue.job_ids yield migration_queue.empty() while migration_job_ids: job_id = migration_job_ids.pop(0) try: job = yield Job.fetch(job_id, migration_queue.connection) #Enqueue job in current worker queue yield queue.enqueue_job(job) except NoSuchJobError: pass if not migration_job_ids: xmppuser.worker=conf.MACHINEID xmppuser.onMigrationTime='' yield xmppuser.save() migration_job_ids = yield migration_queue.job_ids yield migration_queue.empty() finally: xmppuser.worker = conf.MACHINEID xmppuser.onMigrationTime='' res = yield xmppuser.save() self.log.info('RELOGIN %s. Finished. Data %s. Save result: %s', xmppuser.jid, xmppuser, res)
def removeWorker(self, name): self.log.info("Removing worker/queue %s from system", name) #Remove worker from death workers worker = Worker(queues=[], name=name) yield worker.remove(worker.key) #Remove own queue of worker queue = Queue(name) yield queue.empty()