Skip to content

Commit 97b7d75

Browse files
author
Jeny Sadadia
committed
Enable build job retry
Enable job retry service to trigger retry for failed/incomplete build jobs. Signed-off-by: Jeny Sadadia <[email protected]>
1 parent b7be078 commit 97b7d75

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

src/job_retry.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ def _setup(self, args):
2121
return self._api_helper.subscribe_filters({
2222
"state": "done",
2323
"result": ("fail", "incomplete"),
24-
"kind": "job"
25-
# ToDo: Retry for build jobs
26-
# "kind": ("kbuild", "job")
24+
"kind": ("kbuild", "job"),
2725
})
2826

2927
def _stop(self, sub_id):
@@ -63,17 +61,21 @@ def _run(self, sub_id):
6361
continue
6462

6563
parent_kind = None
66-
if node.get('kind') == 'job':
67-
parent_kind = 'kbuild'
68-
# ToDo: retry build jobs
69-
# if node.get("kind") == "kbuild":
70-
# parent_kind = "checkout"
64+
if node.get("kind") == "job":
65+
parent_kind = "kbuild"
66+
if node.get("kind") == "kbuild":
67+
parent_kind = "checkout"
7168
if parent_kind:
7269
event_data = self._find_parent_kind(node, self._api_helper, parent_kind)
7370
if not event_data:
7471
self.log.error(f"Not able to find parent node for {node['id']}")
7572
continue
76-
event_data["jobfilter"] = [node["name"]]
73+
if node["kind"] == "kbuild":
74+
event_data["jobfilter"] = [f'{node["name"]}+']
75+
else:
76+
event_data["jobfilter"] = [node["name"]]
77+
# Change event data state to available to trigger jobs based on scheduler configs
78+
event_data["state"] = "available"
7779
event_data["platform_filter"] = [node["data"].get("platform")]
7880
event_data["retry_counter"] = retry_counter + 1
7981
event_data["debug"] = {"retry_by": str(node["id"])}

src/scheduler.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@ def _run_scheduler(self, channel, sub_id):
411411
if not event:
412412
# If we received a keep-alive event, just continue
413413
continue
414+
self.log.debug(f"Event received: {channel}-{event}")
414415
except Exception as e:
415416
with self._stop_thread_lock:
416417
if self._stop_thread:
@@ -427,8 +428,11 @@ def _run_scheduler(self, channel, sub_id):
427428
continue
428429
subscribe_retries = 0
429430
for job, runtime, platform, rules in self._sched.get_schedule(event):
431+
self.log.debug(f"---Runtime: {runtime.config.name}")
430432
input_node = self._api.node.get(event['id'])
433+
self.log.debug(f"Checking input_node: {input_node['id']}")
431434
jobfilter = event.get('jobfilter')
435+
self.log.debug(f"Job filter: {jobfilter}-{input_node['id']}")
432436
# Add to node data the jobfilter if it exists in event
433437
if jobfilter and isinstance(jobfilter, list):
434438
input_node['jobfilter'] = jobfilter
@@ -441,8 +445,10 @@ def _run_scheduler(self, channel, sub_id):
441445
continue
442446
if not self._verify_architecture_filter(job, input_node):
443447
continue
448+
self.log.debug(f"Checking if node can be created: {input_node['id']}")
444449
with self._api_helper_lock:
445450
flag = self._api_helper.should_create_node(rules, input_node)
451+
self.log.debug(f"should create node flag: {flag} {input_node['id']}")
446452
if flag:
447453
retry_counter = event.get('retry_counter', 0)
448454
self._run_job(job, runtime, platform, input_node, retry_counter)

0 commit comments

Comments
 (0)