beets icon indicating copy to clipboard operation
beets copied to clipboard

beets leaks file descriptors

Open Serranya opened this issue 3 months ago • 0 comments

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

  • OS: Alpine Linux 3.19
  • Python version: Python 3.11.8
  • beets version: 1.6.0
  • Turning off plugins made problem go away (yes/no): yes

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

Serranya avatar Mar 31 '24 10:03 Serranya