def setUp(self): yum_metadata_obj = YumMetadataObj( repo_label=self.repo_label, repo_url=self.repo_url, mirrorlist=self.mirrors, cacert=self.sslcacert, clicert=self.sslclientcert, clikey=self.sslclientkey, proxy_url=self.proxy_url, proxy_port=self.proxy_port, proxy_user=self.proxy_user, proxy_pass=self.proxy_pass, sslverify=self.sslverify, tmp_path=self.tmp_path, filter=self.filter, num_retries=self.num_retries, retry_delay=self.retry_delay) yumAO = None try: yumAO = ActiveObject(yum_metadata_obj) download_items = yumAO.getDownloadItems(repo_dir=self.repo_dir, packages_location=self.pkgpath, newest=self.newest, remove_old=self.remove_old, numOldPackages=self.numOldPackages, skip=self.skip) if download_items.has_key("rpms"): if download_items["rpms"]: self.rpms.extend(download_items["rpms"]) if download_items.has_key("drpms"): if download_items["drpms"]: self.drpms.extend(download_items["drpms"]) finally: # Force __del__ to be called on ActiveObject del yumAO
def setUp(self): yum_metadata_obj = YumMetadataObj(repo_label=self.repo_label, repo_url=self.repo_url, mirrorlist=self.mirrors, cacert=self.sslcacert, clicert=self.sslclientcert, clikey=self.sslclientkey, proxy_url=self.proxy_url, proxy_port=self.proxy_port, proxy_user=self.proxy_user, proxy_pass=self.proxy_pass, sslverify=self.sslverify, tmp_path=self.tmp_path, filter=self.filter, num_retries=self.num_retries, retry_delay=self.retry_delay) yumAO = None try: yumAO = ActiveObject(yum_metadata_obj) download_items = yumAO.getDownloadItems( repo_dir=self.repo_dir, packages_location=self.pkgpath, newest=self.newest, remove_old=self.remove_old, numOldPackages=self.numOldPackages, skip=self.skip) if download_items.has_key("rpms"): if download_items["rpms"]: self.rpms.extend(download_items["rpms"]) if download_items.has_key("drpms"): if download_items["drpms"]: self.drpms.extend(download_items["drpms"]) finally: # Force __del__ to be called on ActiveObject del yumAO
def __init__(self, pFetch, fetcher): """ pFetch - reference to ParallelFetch instance fetcher - reference to a class instantiating BaseFetch """ Thread.__init__(self) self.pFetch = pFetch self.fetcher = ActiveObject(fetcher, "update_bytes_transferred", "reset_bytes_transferred") self._stop = threading.Event() self.fetcher_lock = Lock()
def prepareTrees(self, fetcher): fetcherAO = ActiveObject(fetcher) try: LOG.info("Checking if distribution info exists in repository: %s" % (self.repo_url)) tree_manifest = self.get_tree_manifest(fetcherAO) if not tree_manifest: LOG.info("No distribution tree manifest found.") return [] return self.__prepareTrees(tree_manifest) finally: #Note: We want to explicitly kill the child activeobject # so will use abort() on activeobject's Method class fetcherAO.dummy_method.abort() # We were seeing the invocation of __del__() on activeobject # being delayed, hence child processes weren't dying when they should. # therefore we added the explicit abort() del fetcherAO fetchAO = None
class WorkerThread(Thread): def __init__(self, pFetch, fetcher): """ pFetch - reference to ParallelFetch instance fetcher - reference to a class instantiating BaseFetch """ Thread.__init__(self) self.pFetch = pFetch self.fetcher = ActiveObject(fetcher, "update_bytes_transferred", "reset_bytes_transferred") self._stop = threading.Event() self.fetcher_lock = Lock() def stop(self): self._stop.set() LOG.info("stop() invoked") self.fetcher_lock.acquire() try: try: if hasattr(self, "fetcher"): self.fetcher.fetchItem.abort() except Exception, e: LOG.error("%s" % (traceback.format_exc())) finally: self.fetcher_lock.release() LOG.info("stop() completed") def run(self): LOG.debug("Run has started") while not self._stop.isSet(): try: itemInfo = self.pFetch.getWorkItem() except Queue.Empty: LOG.debug("Queue is empty, thread will end") break if itemInfo is None: break try: result = self.fetcher.fetchItem(itemInfo) if result: status, msg = result self.pFetch.markStatus(itemInfo, status, msg) if status == BaseFetch.STATUS_REQUEUE: time.sleep(2) except Exception, e: LOG.error("%s" % (traceback.format_exc())) LOG.error(e) errorInfo = {} exctype, value = sys.exc_info()[:2] errorInfo["error_type"] = str(exctype) errorInfo["value"] = str(value) # Keeping "error" for backward compatibility with Pulp v1 errorInfo["error"] = str(value) errorInfo["traceback"] = traceback.format_exc().splitlines() errorInfo["exception"] = e self.pFetch.markStatus(itemInfo, BaseFetch.STATUS_ERROR, errorInfo) LOG.info("WorkerThread deleting ActiveObject") self.fetcher_lock.acquire() try: try: #Note: We want to explicitly kill the child activeobject # so will use abort() on activeobject's Method class self.fetcher.dummy_method.abort() # We were seeing the invocation of __del__() on activeobject # being delayed, hence child processes weren't dying when they should. # therefore we added the explicit abort() del self.fetcher except Exception, e: LOG.error("%s" % (traceback.format_exc())) finally: self.fetcher_lock.release() LOG.info("Thread ending")