Skip to content

Commit 1930010

Browse files
Process message task improvements (#2326)
Process message task improvements Fixes #2323 Related to #2290 RELEASE NOTES BEGIN N/A RELEASE NOTES END Reviewed-by: Maja Massarini Reviewed-by: Nikola Forró
2 parents dd7f57a + 7616975 commit 1930010

File tree

2 files changed

+30
-27
lines changed

2 files changed

+30
-27
lines changed

packit_service/worker/tasks.py

+28-23
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def format(self, record):
130130
log_package_versions(package_versions)
131131

132132

133-
class HandlerTaskWithRetry(Task):
133+
class TaskWithRetry(Task):
134134
autoretry_for = (Exception,)
135135
max_retries = int(getenv("CELERY_RETRY_LIMIT", DEFAULT_RETRY_LIMIT))
136136
retry_kwargs = {"max_retries": max_retries}
@@ -140,7 +140,7 @@ class HandlerTaskWithRetry(Task):
140140
acks_late = True
141141

142142

143-
class BodhiHandlerTaskWithRetry(HandlerTaskWithRetry):
143+
class BodhiTaskWithRetry(TaskWithRetry):
144144
# hardcode for creating bodhi updates to account for the tagging race condition
145145
max_retries = 5
146146
# also disable jitter for the same reason
@@ -149,7 +149,12 @@ class BodhiHandlerTaskWithRetry(HandlerTaskWithRetry):
149149

150150

151151
@celery_app.task(
152-
name=getenv("CELERY_MAIN_TASK_NAME") or CELERY_DEFAULT_MAIN_TASK_NAME, bind=True
152+
name=getenv("CELERY_MAIN_TASK_NAME") or CELERY_DEFAULT_MAIN_TASK_NAME,
153+
bind=True,
154+
# set a lower time limit for process message as for other tasks
155+
# https://docs.celeryq.dev/en/stable/reference/celery.app.task.html#celery.app.task.Task.time_limit
156+
time_limit=300,
157+
base=TaskWithRetry,
153158
)
154159
def process_message(
155160
self, event: dict, source: Optional[str] = None, event_type: Optional[str] = None
@@ -188,7 +193,7 @@ def babysit_copr_build(self, build_id: int):
188193

189194

190195
# tasks for running the handlers
191-
@celery_app.task(name=TaskName.copr_build_start, base=HandlerTaskWithRetry)
196+
@celery_app.task(name=TaskName.copr_build_start, base=TaskWithRetry)
192197
def run_copr_build_start_handler(event: dict, package_config: dict, job_config: dict):
193198
handler = CoprBuildStartHandler(
194199
package_config=load_package_config(package_config),
@@ -198,7 +203,7 @@ def run_copr_build_start_handler(event: dict, package_config: dict, job_config:
198203
return get_handlers_task_results(handler.run_job(), event)
199204

200205

201-
@celery_app.task(name=TaskName.copr_build_end, base=HandlerTaskWithRetry)
206+
@celery_app.task(name=TaskName.copr_build_end, base=TaskWithRetry)
202207
def run_copr_build_end_handler(event: dict, package_config: dict, job_config: dict):
203208
handler = CoprBuildEndHandler(
204209
package_config=load_package_config(package_config),
@@ -209,7 +214,7 @@ def run_copr_build_end_handler(event: dict, package_config: dict, job_config: di
209214

210215

211216
@celery_app.task(
212-
bind=True, name=TaskName.copr_build, base=HandlerTaskWithRetry, queue="long-running"
217+
bind=True, name=TaskName.copr_build, base=TaskWithRetry, queue="long-running"
213218
)
214219
def run_copr_build_handler(
215220
self,
@@ -228,15 +233,15 @@ def run_copr_build_handler(
228233
return get_handlers_task_results(handler.run_job(), event)
229234

230235

231-
@celery_app.task(name=TaskName.installation, base=HandlerTaskWithRetry)
236+
@celery_app.task(name=TaskName.installation, base=TaskWithRetry)
232237
def run_installation_handler(event: dict, package_config: dict, job_config: dict):
233238
handler = GithubAppInstallationHandler(
234239
package_config=None, job_config=None, event=event
235240
)
236241
return get_handlers_task_results(handler.run_job(), event)
237242

238243

239-
@celery_app.task(name=TaskName.github_fas_verification, base=HandlerTaskWithRetry)
244+
@celery_app.task(name=TaskName.github_fas_verification, base=TaskWithRetry)
240245
def run_github_fas_verification_handler(
241246
event: dict, package_config: dict, job_config: dict
242247
):
@@ -246,7 +251,7 @@ def run_github_fas_verification_handler(
246251
return get_handlers_task_results(handler.run_job(), event)
247252

248253

249-
@celery_app.task(bind=True, name=TaskName.testing_farm, base=HandlerTaskWithRetry)
254+
@celery_app.task(bind=True, name=TaskName.testing_farm, base=TaskWithRetry)
250255
def run_testing_farm_handler(
251256
self,
252257
event: dict,
@@ -266,7 +271,7 @@ def run_testing_farm_handler(
266271
return get_handlers_task_results(handler.run_job(), event)
267272

268273

269-
@celery_app.task(name=TaskName.testing_farm_results, base=HandlerTaskWithRetry)
274+
@celery_app.task(name=TaskName.testing_farm_results, base=TaskWithRetry)
270275
def run_testing_farm_results_handler(
271276
event: dict, package_config: dict, job_config: dict
272277
):
@@ -281,7 +286,7 @@ def run_testing_farm_results_handler(
281286
@celery_app.task(
282287
bind=True,
283288
name=TaskName.propose_downstream,
284-
base=HandlerTaskWithRetry,
289+
base=TaskWithRetry,
285290
queue="long-running",
286291
)
287292
def run_propose_downstream_handler(
@@ -304,7 +309,7 @@ def run_propose_downstream_handler(
304309
@celery_app.task(
305310
bind=True,
306311
name=TaskName.pull_from_upstream,
307-
base=HandlerTaskWithRetry,
312+
base=TaskWithRetry,
308313
queue="long-running",
309314
)
310315
def run_pull_from_upstream_handler(
@@ -325,7 +330,7 @@ def run_pull_from_upstream_handler(
325330

326331

327332
@celery_app.task(
328-
name=TaskName.upstream_koji_build, base=HandlerTaskWithRetry, queue="long-running"
333+
name=TaskName.upstream_koji_build, base=TaskWithRetry, queue="long-running"
329334
)
330335
def run_koji_build_handler(event: dict, package_config: dict, job_config: dict):
331336
handler = KojiBuildHandler(
@@ -336,7 +341,7 @@ def run_koji_build_handler(event: dict, package_config: dict, job_config: dict):
336341
return get_handlers_task_results(handler.run_job(), event)
337342

338343

339-
@celery_app.task(name=TaskName.upstream_koji_build_report, base=HandlerTaskWithRetry)
344+
@celery_app.task(name=TaskName.upstream_koji_build_report, base=TaskWithRetry)
340345
def run_koji_build_report_handler(event: dict, package_config: dict, job_config: dict):
341346
handler = KojiTaskReportHandler(
342347
package_config=load_package_config(package_config),
@@ -347,7 +352,7 @@ def run_koji_build_report_handler(event: dict, package_config: dict, job_config:
347352

348353

349354
@celery_app.task(
350-
name=TaskName.sync_from_downstream, base=HandlerTaskWithRetry, queue="long-running"
355+
name=TaskName.sync_from_downstream, base=TaskWithRetry, queue="long-running"
351356
)
352357
def run_sync_from_downstream_handler(
353358
event: dict, package_config: dict, job_config: dict
@@ -363,7 +368,7 @@ def run_sync_from_downstream_handler(
363368
@celery_app.task(
364369
bind=True,
365370
name=TaskName.downstream_koji_build,
366-
base=HandlerTaskWithRetry,
371+
base=TaskWithRetry,
367372
queue="long-running",
368373
)
369374
def run_downstream_koji_build(
@@ -386,7 +391,7 @@ def run_downstream_koji_build(
386391
@celery_app.task(
387392
bind=True,
388393
name=TaskName.retrigger_downstream_koji_build,
389-
base=HandlerTaskWithRetry,
394+
base=TaskWithRetry,
390395
queue="long-running",
391396
)
392397
def run_retrigger_downstream_koji_build(
@@ -406,7 +411,7 @@ def run_retrigger_downstream_koji_build(
406411
return get_handlers_task_results(handler.run_job(), event)
407412

408413

409-
@celery_app.task(name=TaskName.downstream_koji_build_report, base=HandlerTaskWithRetry)
414+
@celery_app.task(name=TaskName.downstream_koji_build_report, base=TaskWithRetry)
410415
def run_downstream_koji_build_report(
411416
event: dict, package_config: dict, job_config: dict
412417
):
@@ -421,7 +426,7 @@ def run_downstream_koji_build_report(
421426
@celery_app.task(
422427
bind=True,
423428
name=TaskName.bodhi_update,
424-
base=BodhiHandlerTaskWithRetry,
429+
base=BodhiTaskWithRetry,
425430
queue="long-running",
426431
)
427432
def run_bodhi_update(
@@ -444,7 +449,7 @@ def run_bodhi_update(
444449
@celery_app.task(
445450
bind=True,
446451
name=TaskName.retrigger_bodhi_update,
447-
base=HandlerTaskWithRetry,
452+
base=TaskWithRetry,
448453
queue="long-running",
449454
)
450455
def run_retrigger_bodhi_update(
@@ -467,7 +472,7 @@ def run_retrigger_bodhi_update(
467472
@celery_app.task(
468473
bind=True,
469474
name=TaskName.issue_comment_retrigger_bodhi_update,
470-
base=HandlerTaskWithRetry,
475+
base=TaskWithRetry,
471476
queue="long-running",
472477
)
473478
def run_issue_comment_retrigger_bodhi_update(
@@ -490,7 +495,7 @@ def run_issue_comment_retrigger_bodhi_update(
490495
@celery_app.task(
491496
bind=True,
492497
name=TaskName.vm_image_build,
493-
base=HandlerTaskWithRetry,
498+
base=TaskWithRetry,
494499
queue="short-running",
495500
)
496501
def run_vm_image_build(self, event: dict, package_config: dict, job_config: dict):
@@ -503,7 +508,7 @@ def run_vm_image_build(self, event: dict, package_config: dict, job_config: dict
503508
return get_handlers_task_results(handler.run_job(), event)
504509

505510

506-
@celery_app.task(name=TaskName.vm_image_build_result, base=HandlerTaskWithRetry)
511+
@celery_app.task(name=TaskName.vm_image_build_result, base=TaskWithRetry)
507512
def run_vm_image_build_result(
508513
self, event: dict, package_config: dict, job_config: dict
509514
):

tests/integration/test_bodhi_update.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from packit_service.worker.monitoring import Pushgateway
3232
from packit_service.worker.tasks import (
3333
run_bodhi_update,
34-
BodhiHandlerTaskWithRetry,
34+
BodhiTaskWithRetry,
3535
)
3636
from tests.spellbook import first_dict_value, get_parameters_from_results
3737

@@ -427,9 +427,7 @@ def test_bodhi_update_for_unknown_koji_build_failed_issue_comment(
427427
event=event_dict,
428428
# Needs to be the last try to inform user
429429
celery_task=flexmock(
430-
request=flexmock(
431-
retries=BodhiHandlerTaskWithRetry.retry_kwargs["max_retries"]
432-
),
430+
request=flexmock(retries=BodhiTaskWithRetry.retry_kwargs["max_retries"]),
433431
max_retries=DEFAULT_RETRY_LIMIT,
434432
),
435433
).run_job()

0 commit comments

Comments
 (0)