Merge ~mdeslaur/ubuntu-cve-tracker:more_cvelib_caching into ubuntu-cve-tracker:master

Proposed by Marc Deslauriers
Status: Merged
Merged at revision: 342eea342e33ced00a9ae5f9cdf27d07da0278c0
Proposed branch: ~mdeslaur/ubuntu-cve-tracker:more_cvelib_caching
Merge into: ubuntu-cve-tracker:master
Diff against target: 44 lines (+5/-1)
1 file modified
scripts/cve_lib.py (+5/-1)
Reviewer Review Type Date Requested Status
Alex Murray Approve
Review via email: mp+462345@code.launchpad.net

Commit message

commit 7b18c2bd59198d9eefe61dc0ce2a6b57b661f582
Author: Marc Deslauriers <email address hidden>
Date: Wed Mar 13 13:35:25 2024 -0400

    cve_lib.py: add more caching to small static cve_lib functions

Description of the change

This brings down ubuntu-table runtime, which is used by cve_need_retire and other things:

BEFORE:
$ time ./scripts/cve_need_retire

real 2m7.587s
user 2m6.066s
sys 0m1.522s

AFTER:
$ time ./scripts/cve_need_retire

real 0m46.135s
user 0m44.484s
sys 0m1.652s

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

LGTM (I wonder if whether we should change some of our internal data structures to be sets rather than lists to help with the performance of testing presence etc?)

review: Approve
Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

Yeah, that would definitely improve performance...we tend to just use lists by default when adding new features, but sets would be better in a lot of cases. I'll take a closer look at cve_lib when I get a minute.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/scripts/cve_lib.py b/scripts/cve_lib.py
index 91aa59c..49694fb 100755
--- a/scripts/cve_lib.py
+++ b/scripts/cve_lib.py
@@ -2756,13 +2756,14 @@ def split_overlay_ppa_from_release(rel):
27562756
2757 return rel.split('/')2757 return rel.split('/')
27582758
27592759@lru_cache(maxsize=None)
2760def is_active_release(rel):2760def is_active_release(rel):
2761 return rel not in eol_releases2761 return rel not in eol_releases
27622762
27632763
2764# takes a standard release name2764# takes a standard release name
2765# XXX should perhaps adjust that2765# XXX should perhaps adjust that
2766@lru_cache(maxsize=None)
2766def is_active_esm_release(rel, component='main'):2767def is_active_esm_release(rel, component='main'):
2767 if not is_active_release(rel) or \2768 if not is_active_release(rel) or \
2768 component == 'universe' or component == 'multiverse':2769 component == 'universe' or component == 'multiverse':
@@ -2771,6 +2772,7 @@ def is_active_esm_release(rel, component='main'):
2771 return esm_rel not in eol_releases2772 return esm_rel not in eol_releases
2772 return False2773 return False
27732774
2775@lru_cache(maxsize=None)
2774def get_active_releases_with_esm():2776def get_active_releases_with_esm():
2775 """Return Ubuntu releases with, at least, one active ESM release."""2777 """Return Ubuntu releases with, at least, one active ESM release."""
2776 active_esm_releases = []2778 active_esm_releases = []
@@ -2788,6 +2790,7 @@ def get_active_releases_with_esm():
27882790
2789 return active_esm_releases2791 return active_esm_releases
27902792
2793@lru_cache(maxsize=None)
2791def get_active_esm_releases():2794def get_active_esm_releases():
2792 """Return all active ESM releases."""2795 """Return all active ESM releases."""
2793 active_esm_releases = []2796 active_esm_releases = []
@@ -2799,6 +2802,7 @@ def get_active_esm_releases():
2799 return set(active_esm_releases)2802 return set(active_esm_releases)
28002803
2801# Defaults to main for historical reasons2804# Defaults to main for historical reasons
2805@lru_cache(maxsize=None)
2802def get_esm_name(rel, component='main'):2806def get_esm_name(rel, component='main'):
2803 if rel in esm_releases:2807 if rel in esm_releases:
2804 return rel + '/esm'2808 return rel + '/esm'

Subscribers

People subscribed via source and target branches