apache / apache/libcloud

Improper lock usage leads to inode overflow in LockLocalStorage implementation

Abierto
#1,975 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
2.1k
Forks
931
Merge medio
1 d 2 h
PR fusionados (30 d)
4

Descripción

## Summary

Behaviour of [fasteners.InterProcessLock](https://github.com/harlowja/fasteners/blob/06c3f06cab4e135b8d921932019a231c180eb9f4/fasteners/process_lock.py#L114) 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](https://github.com/apache/libcloud/blob/trunk/libcloud/storage/drivers/local.py#L85) 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

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

just right in the [exit method](https://github.com/apache/libcloud/blob/trunk/libcloud/storage/drivers/local.py#L114).

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Empiece en libcloud/storage/drivers/local.py, en el método exit del controlador local, y revise cómo se gestiona el nombre del archivo de bloqueo después de que InterProcessLock lo libere. Confirme el comportamiento con una prueba específica o una reproducción y, a continuación, verifique que los archivos de bloqueo liberados ya no queden en /tmp sin afectar a la limpieza de archivos inexistentes.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
cloud
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
55/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.