Skip to content

Commit 019df52

Browse files
committed
Use pipeline datetime rather than job submission time to get newer job runs
Signed-off-by: Nikola Forró <nforro@redhat.com> Assisted-by: Claude Opus 4.6 via Claude Code
1 parent da3f352 commit 019df52

3 files changed

Lines changed: 14 additions & 6 deletions

File tree

packit_service/models.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2383,7 +2383,9 @@ def has_newer_run(cls, run: "CoprBuildTargetModel") -> bool:
23832383
processing results for an older (e.g. canceled) build.
23842384
"""
23852385
project_event = run.get_project_event_model()
2386-
if not project_event or not run.submitted_time:
2386+
runs = run.group_of_targets.runs if run.group_of_targets else []
2387+
pipeline_datetime = max((r.datetime for r in runs if r.datetime), default=None)
2388+
if not project_event or not pipeline_datetime:
23872389
return False
23882390
with sa_session_transaction() as session:
23892391
return session.query(
@@ -2396,7 +2398,7 @@ def has_newer_run(cls, run: "CoprBuildTargetModel") -> bool:
23962398
ProjectEventModel.event_id == project_event.event_id,
23972399
CoprBuildTargetModel.identifier == run.identifier,
23982400
CoprBuildTargetModel.target == run.target,
2399-
CoprBuildTargetModel.submitted_time > run.submitted_time,
2401+
PipelineModel.datetime > pipeline_datetime,
24002402
CoprBuildTargetModel.id != run.id,
24012403
)
24022404
.exists()
@@ -3051,7 +3053,9 @@ def has_newer_run(cls, run: "KojiBuildTargetModel") -> bool:
30513053
processing results for an older (e.g. canceled) build.
30523054
"""
30533055
project_event = run.get_project_event_model()
3054-
if not project_event or not run.submitted_time:
3056+
runs = run.group_of_targets.runs if run.group_of_targets else []
3057+
pipeline_datetime = max((r.datetime for r in runs if r.datetime), default=None)
3058+
if not project_event or not pipeline_datetime:
30553059
return False
30563060
with sa_session_transaction() as session:
30573061
return session.query(
@@ -3063,7 +3067,7 @@ def has_newer_run(cls, run: "KojiBuildTargetModel") -> bool:
30633067
ProjectEventModel.type == project_event.type,
30643068
ProjectEventModel.event_id == project_event.event_id,
30653069
KojiBuildTargetModel.target == run.target,
3066-
KojiBuildTargetModel.submitted_time > run.submitted_time,
3070+
PipelineModel.datetime > pipeline_datetime,
30673071
KojiBuildTargetModel.id != run.id,
30683072
)
30693073
.exists()
@@ -3919,7 +3923,9 @@ def has_newer_run(cls, run: "TFTTestRunTargetModel") -> bool:
39193923
processing results for an older (e.g. canceled) run.
39203924
"""
39213925
project_event = run.get_project_event_model()
3922-
if not project_event or not run.submitted_time:
3926+
runs = run.group_of_targets.runs if run.group_of_targets else []
3927+
pipeline_datetime = max((r.datetime for r in runs if r.datetime), default=None)
3928+
if not project_event or not pipeline_datetime:
39233929
return False
39243930
with sa_session_transaction() as session:
39253931
return session.query(
@@ -3932,7 +3938,7 @@ def has_newer_run(cls, run: "TFTTestRunTargetModel") -> bool:
39323938
ProjectEventModel.event_id == project_event.event_id,
39333939
TFTTestRunTargetModel.identifier == run.identifier,
39343940
TFTTestRunTargetModel.target == run.target,
3935-
TFTTestRunTargetModel.submitted_time > run.submitted_time,
3941+
PipelineModel.datetime > pipeline_datetime,
39363942
TFTTestRunTargetModel.id != run.id,
39373943
)
39383944
.exists()

tests/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,7 @@ def koji_build_pr_downstream():
396396

397397
run_model = flexmock(
398398
id=3,
399+
datetime=datetime.now(),
399400
job_project_event=project_event_model,
400401
srpm_build=srpm_build,
401402
koji_build=koji_build_model,

tests/integration/test_listen_to_fedmsg.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2666,6 +2666,7 @@ def test_koji_build_end_downstream(
26662666
flexmock(KojiBuildTargetModel).should_receive("get_by_task_id").and_return(
26672667
koji_build_pr_downstream,
26682668
)
2669+
flexmock(KojiBuildTargetModel).should_receive("has_newer_run").and_return(False)
26692670
url = koji_build_pr_downstream.web_url
26702671
flexmock(requests).should_receive("get").and_return(requests.Response())
26712672
flexmock(requests.Response).should_receive("raise_for_status").and_return(None)

0 commit comments

Comments
 (0)