Skip to content

Commit 0dc476f

Browse files
IdirLISNObada Haddad
authored andcommitted
debug serveur status routing of scoring
1 parent e0c39ab commit 0dc476f

1 file changed

Lines changed: 92 additions & 35 deletions

File tree

src/apps/competitions/tasks.py

Lines changed: 92 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,13 @@
118118

119119
def _send_to_compute_worker(submission, is_scoring, target_group=None):
120120
logger.info(
121-
"Site Worker ==> STARTING submission_id=%s is_scoring=%s target_group=%s",
121+
"Site Worker ==> STARTING submission_id=%s is_scoring=%s "
122+
"target_group_param=%s submission.queue=%s parent=%s",
122123
submission.pk,
123124
is_scoring,
124125
getattr(target_group, "pk", None),
126+
getattr(getattr(submission, "queue", None), "name", None),
127+
getattr(submission.parent, "pk", None) if submission.parent else None,
125128
)
126129

127130
run_args = {
@@ -281,6 +284,12 @@ def _send_to_compute_worker(submission, is_scoring, target_group=None):
281284
if getattr(target_group, "queue", None):
282285
run_args["queue"] = target_group.queue.name
283286
target_vhost = getattr(target_group.queue, "vhost", None)
287+
try:
288+
submission.queue = target_group.queue
289+
submission.save(update_fields=["queue"])
290+
logger.debug("Persisted submission.queue=%s for submission %s", getattr(target_group.queue, "name", None), submission.pk)
291+
except Exception:
292+
logger.exception("Failed to persist submission.queue for submission %s", submission.pk)
284293
logger.info(
285294
"Submission %s forced to group %s queue=%s vhost=%s",
286295
submission.pk,
@@ -289,44 +298,92 @@ def _send_to_compute_worker(submission, is_scoring, target_group=None):
289298
target_vhost,
290299
)
291300
else:
292-
competition = submission.phase.competition
293-
user_group_ids = list(
294-
submission.owner.groups.values_list("id", flat=True)
295-
)
296-
logger.debug(
297-
"User %s group ids for competition %s: %s",
298-
submission.owner.pk,
299-
competition.pk,
300-
user_group_ids,
301-
)
302-
303-
comp_user_groups_qs = (
304-
competition.participant_groups
305-
.filter(id__in=user_group_ids)
306-
.select_related("queue")
307-
)
308-
309-
group = (
310-
comp_user_groups_qs.filter(queue__isnull=False).first()
311-
or comp_user_groups_qs.first()
312-
)
313-
314-
if group and getattr(group, "queue", None):
315-
run_args["queue"] = group.queue.name
316-
target_vhost = getattr(group.queue, "vhost", None)
317-
logger.info(
318-
"Submission %s resolved group=%s queue=%s vhost=%s",
319-
submission.pk,
320-
group.pk,
321-
group.queue.name,
322-
target_vhost,
323-
)
301+
persisted_queue = None
302+
try:
303+
persisted_queue = getattr(submission, "queue", None)
304+
except Exception:
305+
persisted_queue = None
306+
307+
if persisted_queue:
308+
try:
309+
run_args["queue"] = persisted_queue.name
310+
target_vhost = getattr(persisted_queue, "vhost", None)
311+
logger.info(
312+
"Submission %s resolved queue=%s vhost=%s (by persisted submission.queue)",
313+
submission.pk,
314+
run_args.get("queue"),
315+
target_vhost,
316+
)
317+
except Exception:
318+
logger.exception("Error reading persisted submission.queue for submission %s", submission.pk)
324319
else:
320+
competition = submission.phase.competition
321+
user_group_ids = list(submission.owner.groups.values_list("id", flat=True))
325322
logger.debug(
326-
"Submission %s: no matching group with queue for competition %s",
327-
submission.pk,
323+
"User %s group ids for competition %s: %s",
324+
submission.owner.pk,
328325
competition.pk,
326+
user_group_ids,
329327
)
328+
329+
comp_user_groups_qs = (
330+
competition.participant_groups
331+
.filter(id__in=user_group_ids)
332+
.select_related("queue")
333+
)
334+
335+
group = (
336+
comp_user_groups_qs.filter(queue__isnull=False).first()
337+
or comp_user_groups_qs.first()
338+
)
339+
340+
if group and getattr(group, "queue", None):
341+
run_args["queue"] = group.queue.name
342+
target_vhost = getattr(group.queue, "vhost", None)
343+
logger.info(
344+
"Submission %s resolved group=%s queue=%s vhost=%s (by owner membership)",
345+
submission.pk,
346+
group.pk,
347+
group.queue.name,
348+
target_vhost,
349+
)
350+
else:
351+
logger.debug(
352+
"Submission %s: no matching group with queue for competition %s via owner membership",
353+
submission.pk,
354+
competition.pk,
355+
)
356+
357+
if submission.parent:
358+
try:
359+
sibling = (
360+
Submission.objects
361+
.filter(parent=submission.parent)
362+
.exclude(pk=submission.pk)
363+
.filter(queue__isnull=False)
364+
.select_related("queue")
365+
.first()
366+
)
367+
if sibling and getattr(sibling, "queue", None):
368+
run_args["queue"] = sibling.queue.name
369+
target_vhost = getattr(sibling.queue, "vhost", None)
370+
# optionally persist to current child for future
371+
try:
372+
submission.queue = sibling.queue
373+
submission.save(update_fields=["queue"])
374+
logger.debug("Persisted submission.queue from sibling=%s to submission=%s", sibling.pk, submission.pk)
375+
except Exception:
376+
logger.exception("Failed to persist submission.queue (from sibling) for submission %s", submission.pk)
377+
378+
logger.info(
379+
"Submission %s resolved queue=%s vhost=%s (by sibling child %s)",
380+
submission.pk,
381+
run_args.get("queue"),
382+
target_vhost,
383+
sibling.pk,
384+
)
385+
except Exception:
386+
logger.exception("Error while trying to resolve queue from sibling for submission %s", submission.pk)
330387
except Exception:
331388
logger.exception(
332389
"Error while resolving routing for submission %s", submission.pk

0 commit comments

Comments
 (0)