assets: hardlink/copy fallbacks for shared assets are not cleaned up when the source vanishes
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 18/100
Direção de pesquisa
The stale-cleanup logic is remove_stale_external_asset_symlinks, and the fallback artifacts are produced in the rx.asset(shared=True) path where asset() raises FileNotFoundError. Read how the external assets directory mirrors the module path, then decide how a hardlink or copy could be recognised as stale. The issue explicitly asks a maintainer to choose between three designs, so it is not ready for a first-time fix; done means a recorded decision, not a patch.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Follow-up from #7703 (Windows fallback for rx.asset(shared=True)).
remove_stale_external_asset_symlinks can identify stale shared assets for free because a symlink whose target is gone is detectable from the destination alone. The new fallbacks lose that property:
- A hardlink whose partner file was deleted still holds the content (the inode survives), and nothing on the destination reveals that the source module is gone.
- A copy is a plain regular file; whether its source still exists is unknowable without provenance.
Consequence: if a library that exposed shared assets is uninstalled (or an asset file is deleted/renamed), the fallback artifact remains in assets/external and keeps being served/symlinked into fresh builds, where the symlink path would have been pruned. Note the compile itself still fails loudly while the module exists but the asset file is missing (FileNotFoundError in asset()), so the gap only shows for uninstalled modules.
Options, roughly in increasing cost:
- Leave as-is: stale files are cruft, not corruption.
- Provenance sidecar (e.g. a parallel non-served metadata tree) — doubles the tree and needs its own sync/cleanup.
- Derive the source location from the destination path (external dir mirrors
module_path/asset), import the module to locate the caller file, and check existence — avoids metadata but imports arbitrary modules during cleanup.
Marking this up for a maintainer call rather than picking one inside the fallback PR.
- Linguagem predominante
- Python
- Estrelas
- 29k
- Forks
- 1.8k
- Merge médio
- 2d 22h
- PRs com merge (30d)
- 143
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- 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 reflex-dev/reflex
-
Operations on a list[T] | None var throw when the value is NoneTalvez já em andamento @masenf assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
reflex-dev/reflex#7826 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
A dev run stopped before its backend loads leaves .web/nocompile, so the next run or export skips the compileTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
reflex-dev/reflex#7825 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
PropsBase nested serialization applies parent include/exclude filters to child fieldsTalvez já em andamento @harsh21234i assumiu há 1 dia. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
reflex-dev/reflex#7787 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
OTel: add trace_flags to JSON log records so unsampled trace ids are recognizableTalvez já em andamento @ShaanGS assumiu há 7 dias. Abertaenhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
reflex-dev/reflex#7729 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
0.9.12 changelog follow-ups: the #7132 "_get_was_touched" entry describes unreachable behaviour, #7115's hasattr/getattr change is undocumented, #7131's wordingTalvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
reflex-dev/reflex#7260 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de reflex-dev/reflex
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
UKGovernmentBEIS/inspect_ai#6512 ·
Mantenedores costumam responder em até 1 dia
-
area/c++ area/core kind/bug-report
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
tensorflow/quantum#1140 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 68/100
Kav-K/GPTDiscord#501 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
UKGovernmentBEIS/inspect_evals#2863 · 1 comentário ·
Mantenedores costumam responder em até 1 dia