profile browser deletion/removal:
- ensure profile browser DELETE command is working - ensure profile browser job expires if no initial ping - logging: print exception for base job if init fails
This commit is contained in:
		
							parent
							
								
									df905682a5
								
							
						
					
					
						commit
						b11a5f136a
					
				| @ -3,6 +3,7 @@ | ||||
| import os | ||||
| import asyncio | ||||
| import sys | ||||
| import traceback | ||||
| 
 | ||||
| import yaml | ||||
| 
 | ||||
| @ -41,7 +42,11 @@ class K8SJobMixin(K8sAPI): | ||||
| 
 | ||||
|         data = self.templates.env.get_template(template).render(params) | ||||
| 
 | ||||
|         await create_from_yaml(self.api_client, data, namespace=self.namespace) | ||||
|         try: | ||||
|             await create_from_yaml(self.api_client, data, namespace=self.namespace) | ||||
|         except Exception: | ||||
|             traceback.print_exc() | ||||
|             return | ||||
| 
 | ||||
|     async def delete_job_objects(self, selector): | ||||
|         """ delete crawl stateful sets, services and pvcs """ | ||||
|  | ||||
| @ -135,7 +135,7 @@ class K8SManager(BaseCrawlManager, K8sAPI): | ||||
| 
 | ||||
|     async def delete_profile_browser(self, browserid): | ||||
|         """ delete browser job, if it is a profile browser job """ | ||||
|         return await self._handle_completed_job(f"job-{browserid}") | ||||
|         return await self._delete_job(f"job-{browserid}") | ||||
| 
 | ||||
|     # ======================================================================== | ||||
|     # Internal Methods | ||||
| @ -148,25 +148,19 @@ class K8SManager(BaseCrawlManager, K8sAPI): | ||||
|         """ decode secret data """ | ||||
|         return base64.standard_b64decode(secret.data[name]).decode() | ||||
| 
 | ||||
|     async def _handle_completed_job(self, job_name): | ||||
|         """ Handle completed job: delete """ | ||||
|         # until ttl controller is ready | ||||
|         if self.no_delete_jobs: | ||||
|             return | ||||
| 
 | ||||
|     async def _delete_job(self, name): | ||||
|         """ delete job """ | ||||
|         try: | ||||
|             await self._delete_job(job_name) | ||||
|             await self.batch_api.delete_namespaced_job( | ||||
|                 name=name, | ||||
|                 namespace=self.namespace, | ||||
|                 grace_period_seconds=60, | ||||
|                 propagation_policy="Foreground", | ||||
|             ) | ||||
|             return True | ||||
|         # pylint: disable=bare-except | ||||
|         except: | ||||
|             pass | ||||
| 
 | ||||
|     async def _delete_job(self, name): | ||||
|         await self.batch_api.delete_namespaced_job( | ||||
|             name=name, | ||||
|             namespace=self.namespace, | ||||
|             grace_period_seconds=60, | ||||
|             propagation_policy="Foreground", | ||||
|         ) | ||||
|             return False | ||||
| 
 | ||||
|     async def _create_config_map(self, crawlconfig, **kwargs): | ||||
|         """ Create Config Map based on CrawlConfig """ | ||||
|  | ||||
| @ -33,6 +33,9 @@ class ProfileJob(ABC): | ||||
| 
 | ||||
|         self.loop.create_task(self.async_init("profilebrowser.yaml", params)) | ||||
| 
 | ||||
|         print(f"running browser for at least {self.idle_timeout} secs", flush=True) | ||||
|         signal.setitimer(signal.ITIMER_REAL, self.idle_timeout, 0) | ||||
| 
 | ||||
|     async def async_init(self, template, params): | ||||
|         """ async init, overridable by subclass """ | ||||
|         await self.init_job_objects(template, params) | ||||
| @ -52,12 +55,12 @@ class ProfileJob(ABC): | ||||
| 
 | ||||
|         signal.setitimer(signal.ITIMER_REAL, self.idle_timeout, 0) | ||||
| 
 | ||||
|     def timeout_handler(self): | ||||
|     def exit_handler(self): | ||||
|         """ handle SIGTERM  """ | ||||
|         print("sigterm: shutting down browser...", flush=True) | ||||
|         self._do_exit() | ||||
| 
 | ||||
|     def exit_handler(self): | ||||
|     def timeout_handler(self): | ||||
|         """ handle SIGALRM """ | ||||
|         print("sigalrm: timer expired ending idle browser...", flush=True) | ||||
|         self._do_exit() | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user