Improper lock usage leads to inode overflow in LockLocalStorage implementation

Aberta
#1,975 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

  • #2172 de @Sanjays2402 — fechado sem integrar

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
55/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Estagnada
Stack de tecnologia
python
Domínio
cloud

Direção de pesquisa

Comece em libcloud/storage/drivers/local.py, no método exit do driver local, e revise como o nome do arquivo de lock é tratado depois que InterProcessLock o libera. Confirme o comportamento com um teste direcionado ou uma reprodução e, em seguida, verifique se os arquivos de lock liberados não permanecem mais em /tmp sem afetar a limpeza de arquivos ausentes.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Summary

Behaviour of fasteners.InterProcessLock is pretty weird: class creates a lockfile by provided path, if it doesn't exist, but not manage to remove it after lock is released.

It may lead to uncontrolled lockfiles spam in /tmp folder just because libcloud local driver is not removing this lockfile either.

Detailed Information

This issue encountered in cassandra-medusa v0.15 and lower, which was using apache-libcloud<3.4.0,>=3.3.0 as a dependency.

Please see https://github.com/thelastpickle/cassandra-medusa/issues/528 for more details.


Seems like the lightweight fix is to run

                with contextlib.suppress(FileNotFoundError):
                    os.remove(filename)

just right in the exit method.

Linguagem predominante
Python
Estrelas
2.1k
Forks
935
Merge médio
5d 3h
PRs com merge (30d)
15

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de apache/libcloud

Todas as issues de apache/libcloud

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.