Defensively handle errors examining app requests. #922
@ -274,13 +274,16 @@ def command(ctx, kube_config, laconic_config, image_registry, deployment_parent_
|
||||
requests_by_name = {}
|
||||
skipped_by_name = {}
|
||||
for r in requests:
|
||||
status = None
|
||||
try:
|
||||
if r.id in previous_requests and previous_requests[r.id].get("status", "") != "RETRY":
|
||||
print(f"Skipping request {r.id}, we've already seen it.")
|
||||
continue
|
||||
|
||||
app = laconic.get_record(r.attributes.application)
|
||||
if not app:
|
||||
print("Skipping request %s, cannot locate app." % r.id)
|
||||
print(f"Skipping request {r.id}, cannot locate app.")
|
||||
status = "SEEN"
|
||||
continue
|
||||
|
||||
requested_name = r.attributes.dns
|
||||
@ -302,6 +305,12 @@ def command(ctx, kube_config, laconic_config, image_registry, deployment_parent_
|
||||
|
||||
print("Found request %s to run application %s on %s." % (r.id, r.attributes.application, requested_name))
|
||||
requests_by_name[requested_name] = r
|
||||
except Exception as e:
|
||||
print(f"ERROR examining request {r.id}: " + str(e))
|
||||
status = "ERROR"
|
||||
finally:
|
||||
if status:
|
||||
dump_known_requests(state_file, [r], status)
|
||||
|
||||
# Find deployments.
|
||||
deployments = laconic.app_deployments()
|
||||
|
@ -172,7 +172,7 @@ class LaconicRegistryClient:
|
||||
name_or_id,
|
||||
]
|
||||
|
||||
parsed = [AttrDict(r) for r in json.loads(logged_cmd(self.log_file, *args))]
|
||||
parsed = [AttrDict(r) for r in json.loads(logged_cmd(self.log_file, *args)) if r]
|
||||
if len(parsed):
|
||||
self._add_to_cache(parsed)
|
||||
return parsed[0]
|
||||
|
Loading…
Reference in New Issue
Block a user