Overlay-base cache restore misses on cache backends that only prefix-match restoreKeys
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 1/5
- Tempo estimado
- Menos de uma hora
- Facilidade para iniciantes
- 90/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
- Domínio
- ci-cd
Direção de pesquisa
Comece em src/overlay/caching.ts, por volta das linhas 290–302, onde downloadOverlayBaseDatabaseFromCache chama actionsCache.restoreCache passando o prefixo da chave como único argumento; compare com o caminho de upload logo acima, que grava codeql-overlay-base-database-<hash>-<sha>-<run_id>. A correção consiste em passar o mesmo prefixo como terceiro argumento (restoreKeys). Em seguida, execute os testes existentes de cache de overlays na suíte TypeScript para confirmar que não há regressões no comportamento atual do cache do GitHub. O trabalho estará concluído quando execuções de PR em backends que aceitam apenas prefixos puderem restaurar o cache e o comportamento em runners hospedados pelo GitHub continuar igual ao de hoje.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- TypeScript
- Estrelas
- 1.7k
- Forks
- 494
- Merge médio
- 1d 10h
- PRs com merge (30d)
- 52
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/codeql-action
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
github/codeql-action#4052 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 28/100
github/codeql-action#4199 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
github/codeql-action#4185 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
github/codeql-action#4173 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
github/codeql-action#4078 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de github/codeql-action
Issues semelhantes
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 1 dia
-
[Bug] remember() with special characters in namespace hangs until timeout instead of returning 400Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
MystenLabs/MemWal#1133 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug user-priority/P2
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 Menos de uma hora Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Effect-TS/effect#8881 · 1 comentário ·
Mantenedores costumam responder em até 1 dia