action #180851
opencoordination #154768: [saga][epic][ux] State-of-art user experience for openQA
coordination #157345: [epic] Improved test reviewer user experience
Better sorting jobs in parent_group_overview by_groups
0%
Description
Problem Description¶
The parent_group_overview provides limit_builds getting the latest n jobs id which uses to render both the by_builds and by_groups interfaces. Problem is that in this situation
the data do not include the latest job ids per group, ending up to display groups without its latest builds. A by_group can show a job 2 months old from first group but not a 1 week old from group B
Reproduce¶
See screenshots
https://github.com/os-autoinst/openQA/issues/6309
https://github.com/os-autoinst/openQA/pull/6343#issuecomment-2776338075
Further Analysis - current functionality¶
The limit_builds and the process of the resultset is coming from compute_build_results.
The query always fetches the first 400 job ID by default and looks like this
SELECT me.VERSION, me.BUILD, MAX(id) AS lasted_job
FROM jobs me
WHERE (group_id IN ('123', '121', '122'))
GROUP BY VERSION, BUILD
ORDER BY lasted_job DESC
LIMIT 400;
compute_build_results then will loop for each build until it reaches the limit_builds. This means that it will never check some builds if the first item of the list have jobs==limits
on group_builds_functionality_view.html.ep
Already tried:
https://github.com/os-autoinst/openQA/pull/6343
https://github.com/os-autoinst/openQA/pull/6367
Both suffer from insufficient and tragic performance issues
Challenges:
- One API request for two templates. by_group uses the ResultSet of by_build. Maybe the logic should be separated
- not easy to solve the problem with sql. it can get complicated
- performance. The rendering is exponential slow as the limits grow. Maybe we can improve but for sure not make it worse
- It impacts also dashboard_build_results.html.ep
Feature in request and expectations:
by_builds interface doesnt change
by_groups interface presents latest job(s) in some limit, as would say chronological sorted. I mean that if the job date of a groupB is earlier that another job in groupA it should be shown in the dashboard.
Not break dashboard_build_results.html.ep