beetbox / beets

music library manager and MusicBrainz tagger
http://beets.io/
MIT License
12.58k stars 1.8k forks source link

beets leaks file descriptors #5171

Open Serranya opened 3 months ago

Serranya commented 3 months ago

Problem

I'm running beet import with the chroma plugin enabled. After some time beets cannot open any more files. I think what happens is that beet runs out of the maximum allowed file descriptors.

When I run lsof | grep python I can see that there are over 600 open sockets.

The problem goes away when I disable the chroma plugin.

The problem seems to occur because the fingerprinting via library fails on some files. While the fingerprinting eventually succeeds as chroma tries the next backend (fpcalc) the socket from the first attemt seems to stay open.

I patched beets locally to pass force_fpcalc to https://github.com/beetbox/pyacoustid. This also causes the problem to dissapear.

Setup

My configuration (output of beet config) is:

directory: /serra-storage/Music
library: /serra-storage/.Musiclibrary.db

plugins: chroma

import:
    move: no
    copy: no
per_disc_numbering: yes
chroma:
    auto: yes
acoustid:
    apikey: REDACTED