Improper lock usage leads to inode overflow in LockLocalStorage implementation
- Vorherrschende Sprache
- Python
- Sterne
- 2.1k
- Forks
- 931
- Ø Merge
- 1 T. 2 Std.
- Gemergte PRs (30 T.)
- 4
Beschreibung
## 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).
Beitragsleitfaden
Rechercherichtung
Beginnen Sie in libcloud/storage/drivers/local.py bei der exit-Methode des lokalen Treibers und prüfen Sie, wie der Name der Sperrdatei gehandhabt wird, nachdem InterProcessLock sie freigibt. Bestätigen Sie das Verhalten mit einem fokussierten Test oder einer Reproduktion und überprüfen Sie anschließend, dass freigegebene Sperrdateien nicht länger in /tmp zurückbleiben, ohne die Bereinigung fehlender Dateien zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- cloud
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 55/100