Skip to content

beet update re-reports same metadata changes on subsequent runs because item mtime is not persisted #6603

@arsaboo

Description

@arsaboo

Running beet update once should make a second run mostly quiet for unchanged files.
Instead, the same noisy diffs (especially arrangers, composers, lyricists) are shown again on the next run.

I have a large library, and I see a ton of these scrolling by

arsaboo@arsmusic:~$ beet -v update
user configuration: /home/arsaboo/.config/beets/config.yaml
data directory: /home/arsaboo/.config/beets
plugin paths: []
Loading plugins: badfiles, convert, deezer, discogs, duplicates, edit, embedart, fetchart, gaana, importreplace, info, inline, lastgenre, lastimport, limit, listenbrainz, lyrics, mbsubmit, mbsync, missing, musicbrainz, plexsync, rewrite, scrub, spotify, subsonic, types, web, xtractor, youtube
fetchart: google: Disabling art source due to missing key
lastgenre: Loading whitelist ~/.config/beets/genres/genres.txt
lastgenre: Loading canonicalization tree ~/.config/beets/genres/genres-trees.yaml
rewrite: adding template field artist Rahul Dev Burman
inline: adding item field initial_char
inline: adding item field folder
inline: adding item field clean_comments
inline: adding album field format
inline: adding album field alb_data_source
inline: adding album field alb_spotify_album_id
inline: adding album field alb_mtime
inline: adding album field plex_matched
Initializing cache at: /home/arsaboo/.config/beets/plexsync_cache.db
Cache database initialized successfully
Spotify cache tables verified
Sending event: pluginload
library database: /home/arsaboo/.config/beets/musiclibrary.blb
library directory: /data/music
Sending event: library_opened
Parsed query: AndQuery([TrueQuery()])
Parsed sort: NullSort()
Manmohini (1994) - Manmohini Manmohini
  arrangers:
    +
  lyricists:
    +
Sending event: database_change
Mtv Hustle 03 Represent Episode 3 (2023) - Amravati Potta
  arrangers:
    +
Sending event: database_change
Street Ghazals (2018) - Desi Hip-Hop
  arrangers:
    +
Sending event: database_change
Aah Chak 2016 (2015) - 32 Bor
  arrangers:
    +
  composers:
    +
  lyricists:
    +
Sending event: database_change
Koshur Drill (2025) - Koshur Drill
  arrangers:
    +
Sending event: database_change
Achanak Bhayanak (2021) - Achanak Bhayanak
  arrangers:
    +
Sending event: database_change
Aakhir Tak (2021) - Aakhir Tak
  arrangers:
    +
Sending event: database_change
Tu Yaa Main (2026) - Chandni
  arrangers:
    +
  composers:
    +
  lyricists:
    +
Sending event: database_change
Tu Yaa Main (2026) - Fame Us
  arrangers:
    +
Sending event: database_change
MTV Hustle 4, Episode. 8 (2024) - Du Buckle
  arrangers:
    +
Sending event: database_change
Bhram (2008) - Jaane Kaisa Hai Tu
  arrangers:
    +
Sending event: database_change
Bhram (2008) - I Am a Bad Boy
  arrangers:
    +
Sending event: database_change
Bhram (2008) - Meri Akhiyaan
  arrangers:
    +
Sending event: database_change
Bhram (2008) - Teri Aankhon Ki Narmi
  arrangers:
    +
Sending event: database_change
Gaane Bhi Do Yaaro (2005) - Nain Katari
  arrangers:
    +
Sending event: database_change
Kiss... Kis Ko (2004) - Teri Neend
  arrangers:
    +
Sending event: database_change
Ye Bhi Woh Bhi (2002) - Gori
  arrangers:
    +
Sending event: database_change
A Band of Boys Reignite (2024) - Manwa Re
  arrangers:
    +
Sending event: database_change
A Band of Boys Reignite (2024) - Le Chaloon
  arrangers:
    +
Sending event: database_change
Bheegi Bheegi (2026) - Bheegi Bheegi
  arrangers:
    +
  composers:
    +
  lyricists:
    +
Sending event: database_change
Ladies, Thank You (2024) - Piya
  arrangers:
    +
Sending event: database_change
Sunny Sanskari Ki Tulsi Kumari (2025) - Ishq Manzoor
  arrangers:
    +
  composers:
    +
  lyricists:
    +
Sending event: database_change
Bombay (1994) - Bombay Theme
  arrangers:
    +
  lyricists:
    +
Sending event: database_change
...

Setup

  • OS: Ubuntu
  • Python version: 3.11
  • beets version: on the latest github build
  • Turning off plugins made problem go away (yes/no):

Notes from investigation

During update, item metadata is read from disk and in-memory mtime is refreshed. But the subsequent store operation may only persist selected media fields, and mtime is not guaranteed to be included.
If mtime is not written back to DB, next run treats files as needing reprocessing again.
This matches the repeated noisy diffs seen across runs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions