navidrome/tests
Deluan 6823bfd436 perf(artwork): drain local and external artwork in separate pools
A first backfill enqueues artists before albums at a single priority, so
the drain took them in that order. Artists resolve through a
rate-limited agent, and gate() waits for its permit while holding a
worker slot, so the whole pool sat asleep in the limiter with every
album queued behind it.

Measured on a 96k-track library (29,115 artists to 6,949 albums, 4:1):
zero albums resolved in seven minutes, and roughly 3.3 hours before the
first album cover would have appeared. Splitting the drain gives each
class its own slots: albums now finish in under eight minutes while
artists trickle at the same 2/s they were always limited to.

The two budgets are carved out of MaxOpenConns so a second pool cannot
take connections the scanner and the UI need. Dequeue filters by kind,
and the drain index leads with item_kind so each pool seeks to its own
work instead of scanning past the other's backlog.
2026-07-25 13:32:07 -04:00
..
fixtures refactor(lyrics): single ParseLyrics entry point + all-format plugin lyrics (#5632) 2026-06-19 18:25:35 -04:00
harness refactor(artwork): move ImageUploadService to artwork.Uploader 2026-07-24 16:24:19 -04:00
fake_http_client.go Retry calls to Last.FM without MBIDs when if returns artist invalid (#1138) 2021-05-27 20:53:24 -04:00
init_tests.go Allow configuring cache folder (#2357) 2023-06-02 17:14:11 -04:00
mock_album_repo.go perf(artwork): fetch only IDs for backfill enumeration 2026-07-23 13:20:22 -04:00
mock_artist_repo.go perf(artwork): fetch only IDs for backfill enumeration 2026-07-23 13:20:22 -04:00
mock_artwork_queue_repo.go perf(artwork): drain local and external artwork in separate pools 2026-07-25 13:32:07 -04:00
mock_artwork_repo.go refactor(artwork): thread model.Kind through the artwork API 2026-07-24 16:58:23 -04:00
mock_data_store.go fix(artwork): address review findings on prune/sweep races and mock fidelity 2026-07-21 23:57:58 -04:00
mock_ffmpeg.go fix(transcoding): include ffprobe in MSI and fall back gracefully when absent (#5326) 2026-04-07 20:11:38 -04:00
mock_genre_repo.go feat(jellyfin): filter items by year and record label (#5817) 2026-07-19 12:39:31 -04:00
mock_library_repo.go refactor: run Go modernize (#5002) 2026-02-08 09:57:30 -05:00
mock_library_service.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
mock_mediafile_repo.go fix(jellyfin): hydrate artwork on the song cursor 2026-07-23 23:46:44 -04:00
mock_playlist_repo.go perf(artwork): fetch only IDs for backfill enumeration 2026-07-23 13:20:22 -04:00
mock_playlist_track_repo.go feat(artwork): add worker-side artwork resolvers 2026-07-22 15:53:32 -04:00
mock_playqueue_repo.go feat(server): add update and clear play queue endpoints to native API (#4215) 2025-06-11 12:02:31 -04:00
mock_plugin_manager.go feat(plugins): allow mounting library directories as read-write (#5122) 2026-02-28 10:59:13 -05:00
mock_plugin_repo.go fix(plugins): clear plugin errors on startup to allow retrying 2026-03-02 08:56:56 -05:00
mock_property_repo.go refactor: external_metadata -> external.Provider (#3903) 2025-04-08 21:11:09 -04:00
mock_radio_repository.go perf(artwork): fetch only IDs for backfill enumeration 2026-07-23 13:20:22 -04:00
mock_scanner.go fix(server): return correct scanType in startScan response (#5159) 2026-03-09 14:19:53 -04:00
mock_scrobble_buffer_repo.go fix(plugins): discard buffered scrobbles when a plugin is removed (#5737) 2026-07-08 12:37:17 -04:00
mock_scrobble_repo.go feat(server): add scrobble history Native API (#5761) 2026-07-13 11:32:03 -04:00
mock_share_repo.go fix(sharing): validate JWT expiration and share existence on stream endpoint (#5426) 2026-04-27 19:36:57 -04:00
mock_tag_repo.go feat(jellyfin): filter items by year and record label (#5817) 2026-07-19 12:39:31 -04:00
mock_transcoding_repo.go fix(transcoding): place -ss before -i for fast input seeking (#5492) 2026-05-13 17:17:20 -03:00
mock_user_props_repo.go refactor: external_metadata -> external.Provider (#3903) 2025-04-08 21:11:09 -04:00
mock_user_repo.go fix(scanner): import playlists skipped when no admin existed yet (#5609) 2026-06-14 13:39:16 -04:00
mock_user_service.go feat(plugins): New Plugin System with multi-language PDK support (#4833) 2026-01-14 19:22:48 -05:00
navidrome-test.toml feat(plugins): experimental support for plugins (#3998) 2025-06-22 20:45:38 -04:00
test_helpers.go ci: run Go tests on Windows (#5380) 2026-04-19 13:16:47 -04:00