Overlay-base cache restore misses on cache backends that only prefix-match restoreKeys
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 1/5
- Temps estimé
- Moins d'une heure
- Accessibilité débutants
- 90/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- typescript
- Domaine
- ci-cd
Piste de recherche
Commencez dans src/overlay/caching.ts, vers les lignes 290–302, où downloadOverlayBaseDatabaseFromCache appelle actionsCache.restoreCache en passant le préfixe de clé comme seul argument ; comparez avec le chemin d’upload juste au-dessus, qui écrit codeql-overlay-base-database-<hash>-<sha>-<run_id>. La correction consiste à passer le même préfixe comme troisième argument (restoreKeys). Exécutez ensuite les tests existants de mise en cache des overlays dans la suite TypeScript pour confirmer qu’il n’y a pas de régression du comportement actuel du cache GitHub. Le travail est terminé lorsque les exécutions de PR sur les backends qui n’acceptent que des préfixes peuvent restaurer le cache et que le comportement sur les runners hébergés par GitHub reste identique à aujourd’hui.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
downloadOverlayBaseDatabaseFromCache restores the overlay-base database by passing the key prefix as the primary key, with no restoreKeys:
actionsCache.restoreCache(
[dbLocation],
cacheRestoreKeyPrefix,
undefined,
{ segmentTimeoutInMs: 3000 },
)
This depends on the primary key matching by prefix. GitHub's cache service does that, but some Actions-cache-compatible backends only prefix-match restoreKeys. One example is the transparent cache on Blacksmith runners. On those backends, PR runs can never restore the overlay-base database, even though default-branch runs upload it successfully. Every PR run then falls back to a full analysis.
What we see
Default-branch run, on the same runner type:
Setting overlay database mode to overlay-base with caching because we are analyzing the default branch.
Uploading overlay-base database to Actions cache with key codeql-overlay-base-database-1-<hash>-python-2.27.1-<sha>-<run_id>-1
Successfully uploaded overlay-base database from /home/runner/_work/_temp/codeql_databases
Pull request run:
Setting overlay database mode to overlay with caching because we are analyzing a pull request.
Looking in Actions cache for overlay-base database with restore key codeql-overlay-base-database-1-<hash>-python-2.27.1-
No overlay-base database found in Actions cache
No overlay-base database found in cache, reverting overlay database mode to none.
Minimal reproduction of the backend difference
A cache entry saved as probe-<run_id>-full, then restored in a later job on the same branch with actions/cache/restore@v4:
| Restore | GitHub-hosted runner | Blacksmith runner |
|---|---|---|
key: probe-<run_id>- (prefix as the primary key, like this action) |
hit | miss |
key: probe-<run_id>-nomatch, restore-keys: probe-<run_id>- |
hit | hit |
Suggested fix
Also pass the prefix as a restore key:
actionsCache.restoreCache(
[dbLocation],
cacheRestoreKeyPrefix,
[cacheRestoreKeyPrefix],
{ segmentTimeoutInMs: 3000 },
)
On GitHub's cache this matches exactly the same entries as today, since the prefix is tried first either way. On backends that only prefix-match restore keys, overlay analysis starts working.
Environment
github/codeql-action/initandanalyze@v4, CodeQL bundle 2.27.1build-mode: none, languagespythonandjavascript-typescript- Third-party hosted runners (Blacksmith) whose
actions/cachecalls go to their own cache backend
- Langage dominant
- TypeScript
- Étoiles
- 1.7k
- Forks
- 494
- Merge moyen
- 1 j 10 h
- PR mergées (30 j)
- 52
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de github/codeql-action
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
github/codeql-action#4052 · 4 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 28/100
github/codeql-action#4199 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Allow Code Quality customizationOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
github/codeql-action#4185 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
github/codeql-action#4173 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
github/codeql-action#4078 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de github/codeql-action
Issues similaires
-
Tenant
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
MTES-MCT/Dossier-Facile-Frontend#2061 ·
Les mainteneurs répondent en général sous 1 jour
-
area:frontend
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
interledger/publisher-tools#905 ·
Les mainteneurs répondent en général sous 1 jour
-
Add: Cbeebies PL SDOuverteapproved check:passed streams:add
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
iptv-org/iptv#54525 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
DB-plane provider_chat_options.* is accepted by config set but never merged into the loaded configPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
area:web
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
praetorianer777/GoTome#178 ·
Les mainteneurs répondent en général sous 1 jour