Commit Graph

16 Commits

Author SHA1 Message Date
unkin-agent 1c59e6afcb perf(nextup): batch the user data reads the next episode selection makes
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
Next Up walked every series in an unpaginated loop and read user data one
episode at a time, so the Home screen row cost two queries per series once the
cache was gone.

- read the played state of every candidate episode in one query
- read the versions the resume check and the last played date need in one query each
- default PrefetchedUserData on IUserBaseItemComparer so plugin comparers still compile
- cover the bounded query count and the plugin comparer with tests
- share one database across the replica tests
2026-09-21 00:36:39 +10:00
unkin-agent a7919b9bac fix(userdata): read user data through to the database
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
The user data cache and the item's in-memory rows were both filled once per
replica and never invalidated, so a pod serving a playback tick read its own
stale resume position and wrote it back over the position another pod had just
saved, silently losing resume points, played state, favourites and ratings.

- drop the user item data cache
- read single and batched user data from the database on every query
- prefetch user data for in-memory sorts and filters so each stays one query
- cover the lost update against real PostgreSQL with two manager instances
2026-09-20 23:51:29 +10:00
Tim Eisele 49c6a99e00 Cleanup external item data cleanup (#14072) 2025-05-09 08:35:29 -06:00
JPVenson 42bdb22bfb Fixed namespaces 2025-03-25 16:45:00 +01:00
Josh Soref 044cf9fb85 chore: fix spelling
* a
* acceleration
* addition
* altogether
* api clients
* artist
* associated
* bandwidth
* cannot
* capabilities
* case-insensitive
* case-sensitive
* configuration
* delimiter
* dependent
* diacritics
* directors
* enable
* explicitly
* filters
* finish
* have
* hierarchy
* implicit
* include
* information
* into
* its
* keepalive
* localization
* macos
* manual
* matching
* metadata
* nonexistent
* options
* overridden
* parsed
* parser
* playback
* preferring
* processes
* processing
* provider
* ratings
* retrieval
* running
* segments
* separate
* should
* station
* subdirectories
* superseded
* supported
* system
* than
* the
* throws
* transpose
* valid
* was

link: forum or chat rooms

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-01-25 20:05:15 -05:00
Bond_009 fb090df0b5 Enable nullable reference types for MediaBrowser.Controller 2021-05-07 00:39:20 +02:00
telans 9018f8d8be Add full stop at end of comments (SA1629) 2020-06-16 10:37:52 +12:00
Patrick Barron eef7cfd912 Make SonarCloud less angry 2020-05-26 22:43:03 -04:00
Patrick Barron 9ad839c776 Initial migration code 2020-05-12 22:10:35 -04:00
Erwin de Haan ba610b5094 Find+Sed BOM removal *.cs: Jellyfin.Server-MediaBrowser.Controller 2019-01-13 21:01:16 +01:00
Andrew Rabert a86b71899e Add GPL modules 2018-12-27 18:27:57 -05:00
stefan 48facb797e Update to 3.5.2 and .net core 2.1 2018-09-12 19:26:21 +02:00
Luke Pulverenti 9a4712cf22 added user data manager, updated nuget 2013-10-02 12:08:58 -04:00
Luke Pulverenti 785deff188 removed excess hashing in providers and made user data key-based 2013-04-13 14:02:30 -04:00
Luke Pulverenti e2562879d8 Moved userdata to user manager to resolve concurrency issues. must delete userdata and displaypreferences db files. 2013-04-02 15:25:16 -04:00
LukePulverenti 31d079f1ba unified the two sorting api's 2013-03-09 23:22:36 -05:00