https://bugs.winehq.org/show_bug.cgi?id=48035
Bug ID: 48035 Summary: Speed up the new failures detection Product: Wine-Testbot Version: unspecified Hardware: x86 OS: Linux Status: NEW Severity: normal Priority: P2 Component: unknown Assignee: wine-bugs@winehq.org Reporter: fgouget@codeweavers.com Distribution: ---
When a task completes the TestBot distinguishes new failures from preexisting ones by comparing the task's report to the latest WineTest report. Any failure present in the task's report which is not present in the WineTest report is new.
This means parsing both reports to extract the errors and diffing them. This needs to be done whenever we need the list of new failures which is: * When sending a notification to the developer when a wine-patches job completes. * On the JobDetails page.
But the WineTest reports are pretty big (~600KB on Windows, ~1.5MB on Wine) which translates into non negligible processing time. For instance on my development environment loading the JobDetails page for a job with 1 Windows report and 8 Wine reports takes about 0.2 s without the reference WineTest reports, but close to 2 s when they are present.
So it would help to only store the WineTest failures instead of the full report (optimisation a in bug 47998). This would cut down not only on the amount of data to read, but also on the required parsing. Testing this in the same development environment indicates this could bring the JobDetails processing time down to about 0.3 s.
https://bugs.winehq.org/show_bug.cgi?id=48035
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|wine-bugs@winehq.org |fgouget@codeweavers.com
https://bugs.winehq.org/show_bug.cgi?id=48035
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |blocker
https://bugs.winehq.org/show_bug.cgi?id=48035
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|NEW |RESOLVED
--- Comment #1 from François Gouget fgouget@codeweavers.com --- This is fixed by the patch below. It followed a long series of preparatory commits and introduced a few bugs that got fixed by followup commits. https://www.winehq.org/pipermail/wine-devel/2020-January/157605.html
commit 99dbbf84b0191d0827a71e9c7a32a9e40e3ce1d3 Author: Francois Gouget fgouget@codeweavers.com Date: Sun Feb 9 18:43:56 2020 +0100
testbot: Cache the log error lists in .errors files.
Prior to this patch the log files needed to be parsed every time the error list is needed. Parsing the reference report and diffing its errors also needs to be repeated every time the list of new errors is needed. Both of these have a significant impact on the JobDetails page load time. So this patch lets the task scripts (WineRun*) extract the log file errors when they complete, detect the new errors, and saves the result in a .errors file stored next to the original log file. All that's needed then is to read the small .errors file to get the full errors list along with their status (old or new) which speeds up WineSendLog and JobDetails. However the task scripts cannot generate the errors cache file for the testbot.log file because that file is complete only once the task scripts exits. So the errors cache file for it is generated by the WineSendLog script once the job completes. Furthermore the .err files were used to store the validation errors detected by the ParseWineTestReport() function. These are now stored as the '.Extra' error group in the .errors files, making the .err files redundant. Then instead of showing the content of the xxx and xxx.err file in succession, the scripts either just iterate over all the error groups, or present the full content of the log first and then show the 'extra' error groups, that is those that are not tied to a specific log line number.
Note: This requires running UpdateTaskLogs to create the new .errors files and to delete the obsolete .err files.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48035 Signed-off-by: Francois Gouget fgouget@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
https://bugs.winehq.org/show_bug.cgi?id=48035
François Gouget fgouget@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #2 from François Gouget fgouget@codeweavers.com --- This works great! Closing.