<feed xmlns='http://www.w3.org/2005/Atom'>
<title>jellyfin/Jellyfin.Server.Implementations/Item/ItemPersistenceService.cs, branch v12.0-rc5</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.lodewillems.com/jellyfin/atom?h=v12.0-rc5</id>
<link rel='self' href='https://git.lodewillems.com/jellyfin/atom?h=v12.0-rc5'/>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/'/>
<updated>2026-08-06T06:00:17Z</updated>
<entry>
<title>Move the deletion of old related info to just before the save</title>
<updated>2026-08-06T06:00:17Z</updated>
<author>
<name>Marc Brooks</name>
<email>IDisposable@gmail.com</email>
</author>
<published>2026-08-04T11:14:31Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=1c5c95ad1d8e1dde223afcb85c88c65c8fa3b71d'/>
<id>urn:sha1:1c5c95ad1d8e1dde223afcb85c88c65c8fa3b71d</id>
<content type='text'>
This makes the deletion of BaseItemProviders, BaseItemImageInfos, and BaseItemMetadataFields happen in batch as  a contiguous block so the lock isn't held across items, just before the bulk SaveChanges.
</content>
</entry>
<entry>
<title>Speed up search for existing item values</title>
<updated>2026-08-06T03:48:26Z</updated>
<author>
<name>Marc Brooks</name>
<email>IDisposable@gmail.com</email>
</author>
<published>2026-08-04T10:32:47Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=812c81916234a496f02be44016c1421cb0ea076f'/>
<id>urn:sha1:812c81916234a496f02be44016c1421cb0ea076f</id>
<content type='text'>
Replace the O(n²)  array .First scan with a dictionary lookup
</content>
</entry>
<entry>
<title>Use a HashSet for existing items</title>
<updated>2026-08-06T03:48:13Z</updated>
<author>
<name>Marc Brooks</name>
<email>IDisposable@gmail.com</email>
</author>
<published>2026-08-04T10:27:25Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=234a49903b4424ebcbd7248739eaefeff0c7bd4d'/>
<id>urn:sha1:234a49903b4424ebcbd7248739eaefeff0c7bd4d</id>
<content type='text'>
Makes the test O(log n)
</content>
</entry>
<entry>
<title>Fix playlist entries being lost on migration and library scans</title>
<updated>2026-07-29T12:40:49Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-07-29T12:40:49Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=8293eb26b995a21f88bff60dcf93da8d98080cc0'/>
<id>urn:sha1:8293eb26b995a21f88bff60dcf93da8d98080cc0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Allow duplicate LinkedChildren for Playlists</title>
<updated>2026-07-23T11:41:51Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-07-23T11:35:43Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=dc300fae53b6b42090341cb517238bbc76479e02'/>
<id>urn:sha1:dc300fae53b6b42090341cb517238bbc76479e02</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix too many SQL variables in DeleteItem for large batch deletes</title>
<updated>2026-06-22T03:03:45Z</updated>
<author>
<name>Joshua M. Boniface</name>
<email>joshua@boniface.me</email>
</author>
<published>2026-06-22T02:49:46Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=069eb40ebfdca4030d0c87d56f4398f6f5d1b55e'/>
<id>urn:sha1:069eb40ebfdca4030d0c87d56f4398f6f5d1b55e</id>
<content type='text'>
The FixIncorrectOwnerIdRelationships migration deletes all duplicate
items in a single DeleteItemsUnsafeFast -&gt; DeleteItem(ids) call. Inside
DeleteItem, the owned-extras lookup used a raw HashSet.Contains, which EF
inlines as one SQL variable per id and overflows SQLite's variable limit
on large libraries. Use WhereOneOrMany so the id set is bound as a single
json_each parameter, like the rest of the method, making bulk deletes
work for unlimited library sizes.
</content>
</entry>
<entry>
<title>Prefer local alternate versions when deduplicating linked children</title>
<updated>2026-06-07T21:06:37Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-06-05T17:40:28Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=fe1accc0e79885c5706babac5dea527d0b07d8e2'/>
<id>urn:sha1:fe1accc0e79885c5706babac5dea527d0b07d8e2</id>
<content type='text'>
(cherry picked from commit 53f02a04ef7ff8f9d78c5f4e0924a0871b0e96fb)
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'upstream/master' into perf-rebased</title>
<updated>2026-03-11T18:36:37Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-03-11T18:36:37Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=bcd5c33ecdc0d90d79a344754b1d8e7862618f23'/>
<id>urn:sha1:bcd5c33ecdc0d90d79a344754b1d8e7862618f23</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix batch delete of items with same userdata keys</title>
<updated>2026-03-07T20:23:35Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-03-07T20:23:35Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=e6e7f2a692183355ad474ba6b0c468d545821c12'/>
<id>urn:sha1:e6e7f2a692183355ad474ba6b0c468d545821c12</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Split BaseItemRepository and IItemRepository</title>
<updated>2026-03-07T19:12:42Z</updated>
<author>
<name>Shadowghost</name>
<email>Ghost_of_Stone@web.de</email>
</author>
<published>2026-03-07T19:12:42Z</published>
<link rel='alternate' type='text/html' href='https://git.lodewillems.com/jellyfin/commit/?id=077fa89717957f871b172ca4b2dc4a178efd3bc5'/>
<id>urn:sha1:077fa89717957f871b172ca4b2dc4a178efd3bc5</id>
<content type='text'>
</content>
</entry>
</feed>
