apache / apache/libcloud

Improper lock usage leads to inode overflow in LockLocalStorage implementation

Offen
#1,975 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.