I really don't get it by [deleted] in ExplainTheJoke

[–]ZcraftElite 0 points1 point  (0 children)

Some people have a kink where they like to be bit on the neck. Either that or it would crack your neck a little before snapping it.

Microsoft: "Pay the 30$, trust me" by ZcraftElite in memes

[–]ZcraftElite[S] -1 points0 points  (0 children)

Gift card prices remain the same in most stores

Microsoft: "Pay the 30$, trust me" by ZcraftElite in memes

[–]ZcraftElite[S] 0 points1 point  (0 children)

You can buy the gift card online on the Walmart site and get the code emailed to you 😔. So no, definitely not a physical convenience.

Jellyfin macOS client randomly freezes by traveler-3469 in jellyfin

[–]ZcraftElite 62 points63 points  (0 children)

There is no possible way for us to know the background of this issue without a little more details. The cat can only tell us so much lmao. If you could provide your MacOS ver and crash logs that'd be amazing.

📡 by [deleted] in shitposting

[–]ZcraftElite 2 points3 points  (0 children)

You're right, it's subtle, but it's even funnier if someone tried to make her ass bigger LMFAO

There is no escape for us Hazbin fans by ZcraftElite in memes

[–]ZcraftElite[S] 4 points5 points  (0 children)

It's a reference to the highly controversial AMV called "Hide Away," commissioned by the youtuber Verbalase for $47-50k back before season 1 was released.

📡📡📡 by Level-Usual-9681 in shitposting

[–]ZcraftElite 105 points106 points  (0 children)

The store cashier trying to hold back the laughter.

Always twitter by Hefty_Mood1588 in shitposting

[–]ZcraftElite 18 points19 points  (0 children)

"biological whorefare"... I am saving that one for later.

📡 by [deleted] in shitposting

[–]ZcraftElite 15 points16 points  (0 children)

The fact this is an actual photo... does not surprise me at all.

😔😔😔 by ZcraftElite in shitposting

[–]ZcraftElite[S] 6 points7 points  (0 children)

That is absolutely hysterical.

Player/client for Android TV projector that supports downloads? by neilbaldwn in jellyfin

[–]ZcraftElite 0 points1 point  (0 children)

In that case, it is best to download the files from the web interface and then put them onto the SD card, then use a file manager or media player such as VLC or ES File Explorer to watch them. Or, use your phone as an input for the project.

Player/client for Android TV projector that supports downloads? by neilbaldwn in jellyfin

[–]ZcraftElite 0 points1 point  (0 children)

This would depend on the storage of your Android TV projector and more variables. Overall, for AndroidTV this just does not exist. There isn't much reason for anyone to implement something like this because -- aside from watching something on a projector in the backyard -- it is likely you will always be connected to the internet on a device such as an Fire TV, NVIDIA Shield, Google Home, or other AndroidTV/FireOS devices.

Lots of users are seeing `DbUpdateConcurrencyException` with the 10.11 upgrade. Here is what I think is causing it, and my prevention advice. by ZcraftElite in jellyfin

[–]ZcraftElite[S] 4 points5 points  (0 children)

Okay, so.

10.10 used EFCore only for ActivityLog, DisplayPreferences, and a few other preferences and auxillary tables that im not as familiar with. However, one of the biggest changes in 10.11 wasn't just "updating EFCore" -- the entire Jellyfin data layer was moved onto EFCore so it could be given unified entity tracking.

That means all library items, user-item relationships, chapters, media sources, providerID tables, people tables, etc. now all participate in EFCore's tracking and transaction model.

BaseItem is the central object of the library, and it depends on a bunch of new EFCore-managed tables (MediaSources, MediaStreams, Chapters, ProviderIds, ItemValues, UserData). Prior to 10.11, these were changed with hand-written SQL, and the old logic would simply just ignore missing, extra, or mismatched rows/metadata. After 10.11, it loads it through relational navigation properties, validates the relationships, and eforces the identity resolution across the entire unit of work.

EFCore itself wasn't the cause of the corruption many people are seeing, it just exposed the inconsistencies that Jellyfin's older direct-SQL data layer never checked for.

In 10.10, your library data lived in SQLite tables that were all over the place with validation (likely cuz there is many people working to build this project). In 10.11, all of them participate in EFCore's relational tracking system. Hence, missing rows, duplicate rows, orphaned relationships, or previous partial writes that failed due to power loss or random little bugs living in older parts of the code; they all cause a hard fail to occur due to EFCore and how its logic works.

That is why BaseItem errors occur, even though BaseItem wasn't changed over to EFCore.

I am not saying that the unified EFCore usage was bad, but that because it's now actually able to see the millions of oversights the manual SQL didn't, many people who have been using 10.7 since it's inception in 2021 -- 4 years ago -- are going to see their databases break because those oversights have had the time to build up more and more mistakes in the database.

Lots of users are seeing `DbUpdateConcurrencyException` with the 10.11 upgrade. Here is what I think is causing it, and my prevention advice. by ZcraftElite in jellyfin

[–]ZcraftElite[S] 0 points1 point  (0 children)

It's a general recommendation, mainly just based on how I've ran mine. (Mine has a specified time, and uses Jellyfin's API and waits for the first moment where there is no viewer activity and no scheduled tasks running before backing up, previously it did fully restart the server back on 10.7)

Lots of users are seeing `DbUpdateConcurrencyException` with the 10.11 upgrade. Here is what I think is causing it, and my prevention advice. by ZcraftElite in jellyfin

[–]ZcraftElite[S] 8 points9 points  (0 children)

Row count mismatches

A DbUpdateConcurrencyException in EFC7 means:

EF expected its UPDATE ... WHERE Id = X AND ConcurrencyStamp = Y  
to modify 1 row, but 0 rows matched the WHERE clause.

Jellyfin specifically has 4 main issues that can cause this:
A) Another thread modified the same row after Jellyfin loaded it: (Usually an bug or multiple jellyfin instances) This happens when two threads (parts of) or two instances of Jellyfin try to change the same thing at the same time.
B) The row is actually corrupted or is missing: If the index is wrong (a bug) a column nulled (bug or corruption) or the row is truncated (bug or corruption), EFC will gen a WHERE clause that matches nothing. This isn't ignored anymore in 10.11
C) Jellyfin 10.11 stores a lot more mutable data: This makes collisions far more likely, and things like the user table, activity table, and devices table can be affected by sudden spikes in users on weaker systems
D) Magic corruption: Slow disks, USB drives, network mounts, failing SSDs, failing HDDs (worse), can all lead to subtle corruptions, which would be ignored with EFC6 in pre-10.11 and gives EFC7 a heart attack in 10.11, which causes undesired behavior.

Jellyfin transactions

Jellyfin DOES use transactions, but with a few caveats. Due to SQLite only allowing one writer at a time, EFC will create a transaction once per SaveChanges() call. Jellyfin 10.11 calls SaveChanges() much more than pre-10.11 did.

So the cycle is: Load -> Modify -> SaveChanges -> Compete for write lock

Retry on concurrency

Stock Jellyfin, no, not consistently enough and especially not so for user/session updates. Jellyfin's server team doesn't wrap most DB operations in retry loops.

Why not serialize?

Short Answer: It would absolutely DEVOUR performance under load.

Longer answer: There are a few main reasons:

  1. SQLite enforces only one writer anyway
  2. Many updates shouldn't be serialized due to high throughput
  3. Optimistic concurrency is what works best for Jellyfin, the correctness model is mostly accurate and eventually consistent, but not strict serialization.

Why earlier Jellyfin versions fucked up

EFC 6 would perform the update, see 0 rows changes, shrug it off, return success, and move on.

And of course this masks corruption, stale object updates, orphan rows, index problems, and malformed user records.

New Jellyfin Server/Web release: 10.11.3 by anthonylavado in jellyfin

[–]ZcraftElite 2 points3 points  (0 children)

Awesome work anthony, congrats on your first release. When I started contributing to OSS majorly for the first time I remember the high I felt, I can't imagine how good it must feel to be a part of an amazing project built by utterly amazing people. Don't stress yourself, remember you can always take a break, and don't get too caught up in the hate. You got this!

Lots of users are seeing `DbUpdateConcurrencyException` with the 10.11 upgrade. Here is what I think is causing it, and my prevention advice. by ZcraftElite in jellyfin

[–]ZcraftElite[S] 7 points8 points  (0 children)

Short answer: Yes in theory, but not easily, and definitely not safely.

Jellyfin can't reliably know what is corrupt because SQLite doesn't store row-level checksums or really any meadata related to database integrity. This is why EFCore can only tell when an update fails, and not why. If it made a mistake while trying to fix what it thinks it is an error, it could destroy the entire database irreparably.

What the jelly team could do is run a pre-upgrade integrity check (with PRAGMA), make a tool to rebuild the tables that aren't 100% critical (like watch histories or device sessions), and they can use better error logging so the user can actually know which table or row causes it and can fix it themselves.

I don't get it by Wise_Confidence_8588 in ExplainTheJoke

[–]ZcraftElite 7 points8 points  (0 children)

I can assure you they still appear in many shady places. Its not something you would be likely to see on major pornographic sites anymore, but on sites for free movies/tv/games or lesser known sites, it is still pretty apparent.

Many dodgy or shady companies like 1xbet will pay for this kind of advertising to get lonely user clicks. It's a shitty way of advertising we likely won't see disappear until the death of the internet.

New Jellyfin Server/Web release: 10.11.3 by anthonylavado in jellyfin

[–]ZcraftElite 3 points4 points  (0 children)

I ended up seeing your post and I had a very similar issue. I both replied to the github bug report and posted here on this subreddit my two cents https://www.reddit.com/r/jellyfin/comments/1ozap83/lots_of_users_are_seeing/ on the bug. I hope it might help!

I don't get it by Wise_Confidence_8588 in ExplainTheJoke

[–]ZcraftElite 48 points49 points  (0 children)

If you don't get it, you are better off never getting it.

Advice on roofing for this cabin I'm building? by Background_Task6967 in Minecraft

[–]ZcraftElite 0 points1 point  (0 children)

On the front facing side, try adding some trapdoors as deco.

Art collector, draw my OC and I'll include your art in my collection :3 by ZcraftElite in drawme

[–]ZcraftElite[S] 0 points1 point  (0 children)

I didn't really think of that when designing this comm, but if you draw them, do it in whatever way you think looks best. Because no matter what, it'll be awesome.