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