perf: fast home and search via canonical readmodel sync and session bypass #9
Loading…
Reference in a new issue
No description provided.
Delete branch "perf/canonical-readmodel-fast-home-search"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
This PR addresses the slow Jellyfin-Web initial page load and search requests by removing request-time executor delays, optimizing warm session authentications, completing canonical readmodel derivations and writer synchronizations, and streamlining Views and Search execution.
Key Changes
perf(http)):normalize_routes: Replaced asynchronous CPU executor dispatch with synchronous in-memory URI canonicalization in Tokio. Added immediate 503 Service Unavailable check during process cancellation.SessionRegistry: Added zero-allocation in-memory lookup methodssession_for_keyandcapabilities_for_device.RequestContextBuilder: Authenticated warm requests directly verify session in-memory, updating access timestamp without querying database tables (device_options,image_tags) or dispatchingreserve_login/committasks.feat(readmodel)):builder.rs: Implemented extraction and calculation ofpremiere_date,query_rating,query_subrating,acl_unrated_mask,acl_max_rating, andacl_max_subrating.sync.rs: Added batch resolution of version library mappings, owned parts (AdditionalPart), tag inheritance across hierarchy (items, parents, grandparents), and ancestor ACL ratings.sync_search_facts_for_compositions), metadata updates (sync_search_facts_for_namedandsync_search_facts_for_compositions), named item relations, and remaining source cleanup.perf(home)):view_factory.rs): Replaced GET-timemutate_compositionwrite transactions with read-first checks viacreate_composition.views/catalog.rs): Avoids unrestricted composition loading (Uuid::nil()) by querying specific candidate IDs for requested view kinds.compact.rs): Preserved named metadata search execution while short-circuiting empty candidate sets.Verification
cargo clippy --workspace --all-targets -- -D warnings: 0 warnings, 0 errors.RUSTFIN_TEST_COMPILER_CACHE=off just gate: All checks (architecture,fmt-check,clippy, integrationtestacross isolated PostgreSQL,deny,machete) passed cleanly.just domain-test identity_api_tests: 145 passed; 0 failed.