Merge ~mdeslaur/ubuntu-cve-tracker:perf-part5 into ubuntu-cve-tracker:master

Proposed by Marc Deslauriers
Status: Merged
Merge reported by: Marc Deslauriers
Merged at revision: 76ecba2f928f6757122b4a5d78b3380af47a0b79
Proposed branch: ~mdeslaur/ubuntu-cve-tracker:perf-part5
Merge into: ubuntu-cve-tracker:master
Diff against target: 47 lines (+5/-6)
2 files modified
scripts/check-syntax (+4/-5)
scripts/cve_lib.py (+1/-1)
Reviewer Review Type Date Requested Status
Alex Murray Approve
Review via email: mp+461984@code.launchpad.net

Commit message

commit 76ecba2f928f6757122b4a5d78b3380af47a0b79
Author: Marc Deslauriers <email address hidden>
Date: Thu Mar 7 10:44:11 2024 -0500

    cve_lib.py: add caching to product_series() as it is used often

commit edb4ba8712239aa6705bf6c93bc1891c4d1fe774
Author: Marc Deslauriers <email address hidden>
Date: Thu Mar 7 10:43:36 2024 -0500

    check-syntax: don't call pkg_ever_existed() for every release

commit 7145416e263bbebf36207a9358a4e536d03c239d
Author: Marc Deslauriers <email address hidden>
Date: Thu Mar 7 10:35:01 2024 -0500

    check-syntax: improve ever_existed() performance

    We don't need to parse through lists of releases and eol releases,
    we just need to see if the package exists in the source map.

Description of the change

more performance changes.

BEFORE:
$ time ./scripts/check-syntax -j8

real 0m50.450s
user 6m15.385s
sys 0m7.404s

AFTER:
$ time ./scripts/check-syntax -j8

real 0m38.672s
user 4m50.809s
sys 0m6.109s

To post a comment you must log in.
Revision history for this message
Alex Murray (alexmurray) wrote :

LGTM!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/scripts/check-syntax b/scripts/check-syntax
2index 78640b3..d4e4aaf 100755
3--- a/scripts/check-syntax
4+++ b/scripts/check-syntax
5@@ -95,10 +95,8 @@ def CVEs_from_CNA():
6
7
8 def ever_existed(pkg):
9- for rel in cve_lib.all_releases:
10- if rel in cve_lib.eol_releases:
11- continue
12- if rel in source and pkg in source[rel]:
13+ for rel in source:
14+ if pkg in source[rel]:
15 return True
16 return False
17
18@@ -599,6 +597,7 @@ def check_cve(cve):
19
20 supported = []
21 for pkg in sorted(data["pkgs"].keys()):
22+ pkg_ever_existed = ever_existed(pkg)
23 # Verify have required releases for each package
24 listed_releases = set(sorted(data["pkgs"][pkg].keys()))
25 all_required_releases = (set(cve_lib.all_releases + ["devel"]) - set([cve_lib.devel_release])) - set(cve_lib.eol_releases)
26@@ -806,7 +805,7 @@ def check_cve(cve):
27 cve_okay = False
28
29 # Check that package exists in a given release
30- if not ever_existed(pkg):
31+ if not pkg_ever_existed:
32 if is_active(cvepath) and not cve_lib.is_active_esm_release(release):
33 # forcibly skip linux-lts-backport packages and #
34 # other derived kernels since want to track them
35diff --git a/scripts/cve_lib.py b/scripts/cve_lib.py
36index 07fc8e1..a3104fa 100755
37--- a/scripts/cve_lib.py
38+++ b/scripts/cve_lib.py
39@@ -720,7 +720,7 @@ subprojects = {
40 }
41 }
42
43-
44+@lru_cache(maxsize=None)
45 def product_series(rel):
46 """Return the product,series tuple for rel."""
47 if rel in external_releases:

Subscribers

People subscribed via source and target branches