Files
felhom.eu/documentation/audits/security-app-updates-2026-10-27/part3/undo-proof-jellyfin.json
T

178 lines
11 KiB
JSON

{
"app": "jellyfin",
"from": "jellyfin/jellyfin:10.11.11",
"to": "jellyfin/jellyfin:12.4",
"started": "2026-10-27T16:05:59Z",
"drill_head_before": "a241806d00ecf4020741594fd22792b4d87c9069",
"update": {
"accepted": true,
"http": "202",
"phases": [
{
"t": 0.0,
"phase": "backing-up",
"label": "Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 3.1,
"phase": "safety-dump",
"label": "Adatb\u00e1zis pillanatk\u00e9p\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 4.1,
"phase": "pulling",
"label": "\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 36.9,
"phase": "copying",
"label": "Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 40.0,
"phase": "starting",
"label": "Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 41.0,
"phase": "verifying",
"label": "M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 343.5,
"phase": "undoing",
"label": "Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026",
"updating": true,
"error": null,
"hold": null
},
{
"t": 362.1,
"phase": "undone",
"label": "Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra",
"updating": false,
"error": null,
"hold": null
}
],
"duration_s": 362.1,
"final_phase": "undone",
"update_error": null,
"hold_reason": null,
"state": "running"
},
"to_log_while_verifying": [
"[17:15:41] [INF] [9] Jellyfin.Server.Migrations.Routines.CleanupOrphanedExternalData: Skipping chapter image cleanup; root /config/metadata/library does not exist",
"[17:15:41] [INF] [9] InternalCodeMigration: Migration 20260525010000_CleanupOrphanedExternalData was successfully applied",
"[17:15:41] [INF] [9] InternalCodeMigration: Perform migration 20260610120000_RefreshCleanNamesAndValues",
"[17:15:41] [INF] [9] Jellyfin.Server.Migrations.Routines.RefreshCleanNamesAndValues: Refreshing CleanName for 4 library items",
"[17:15:41] [INF] [9] Jellyfin.Server.Migrations.Routines.RefreshCleanNamesAndValues: Processed: 0/4 - Updated: 0 - Time: 00:00:00.0216493",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RefreshCleanNamesAndValues: Refreshed CleanName for 1 out of 4 items in 00:00:00.3289760",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RefreshCleanNamesAndValues: Refreshing CleanValue for 0 item values",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RefreshCleanNamesAndValues: Processed: 0/0 - Updated: 0 - Time: 00:00:00.0111801",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RefreshCleanNamesAndValues: Refreshed CleanValue for 0 out of 0 item values in 00:00:00.0189360",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260610120000_RefreshCleanNamesAndValues was successfully applied",
"[17:15:42] [INF] [9] InternalCodeMigration: Perform migration 20260722120000_RefreshForcedSortNames",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RefreshForcedSortNames: Refreshing SortName for 0 library items with a forced sort name",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RefreshForcedSortNames: Processed: 0/0 - Updated: 0 - Time: 00:00:00.0047795",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RefreshForcedSortNames: Refreshed SortName for 0 out of 0 items in 00:00:00.0221081",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260722120000_RefreshForcedSortNames was successfully applied",
"[17:15:42] [INF] [9] InternalCodeMigration: Perform migration 20260729120000_RestorePlaylistChildrenFromMetadata",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260729120000_RestorePlaylistChildrenFromMetadata was successfully applied",
"[17:15:42] [INF] [9] InternalCodeMigration: Perform migration 20260821120000_RecomputeSeriesPresentationKey",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RecomputeSeriesPresentationKey: Recomputing presentation unique key for 0 series",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RecomputeSeriesPresentationKey: Recomputed presentation unique key for 0 of 0 series and 0 seasons in 00:00:00.0060964",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260821120000_RecomputeSeriesPresentationKey was successfully applied",
"[17:15:42] [INF] [9] InternalCodeMigration: Perform migration 20260825200000_ConsolidateLocalizedUserViews",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260825200000_ConsolidateLocalizedUserViews was successfully applied",
"[17:15:42] [INF] [9] InternalCodeMigration: Perform migration 20260831100000_EnableLocalSimilarityProviders",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260831100000_EnableLocalSimilarityProviders was successfully applied",
"[17:15:42] [INF] [9] InternalCodeMigration: Perform migration 20260908120000_RepairAlternateVersionLinks",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.RepairAlternateVersionLinks: No alternate version links found, nothing to repair.",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260908120000_RepairAlternateVersionLinks was successfully applied",
"[17:15:42] [INF] [9] InternalCodeMigration: Perform migration 20260911120000_StripEmbeddedLinkedChildren",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.StripEmbeddedLinkedChildren: Dropped dead keys from the serialized data of 2 items",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260911120000_StripEmbeddedLinkedChildren was successfully applied",
"[17:15:42] [INF] [9] InternalCodeMigration: Perform migration 20260912120000_HarmonizeConflictingUserData",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.HarmonizeConflictingUserData: No conflicting user data found.",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260912120000_HarmonizeConflictingUserData was successfully applied",
"[17:15:42] [INF] [9] InternalCodeMigration: Perform migration 20260915120000_MigrateRatingLevels",
"[17:15:42] [INF] [9] Jellyfin.Server.Migrations.Routines.MigrateRatingLevels: Recalculating parental rating levels based on rating string.",
"[17:15:42] [INF] [9] InternalCodeMigration: Migration 20260915120000_MigrateRatingLevels was successfully applied",
"[17:15:42] [INF] [9] Main: Migrations have been applied, optimizing the database... This might take a while",
"[17:15:42] [INF] [9] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: Not analyzing jellyfin.db, the library holds no items yet",
"[17:15:42] [INF] [9] Jellyfin.Database.Providers.Sqlite.SqliteDatabaseProvider: jellyfin.db optimized successfully!"
],
"observables_after": {
"pinned_images": {
"jellyfin": "jellyfin/jellyfin:10.11.11"
},
"installed_images": {
"jellyfin": "jellyfin/jellyfin:10.11.11"
},
"catalog_images": {
"jellyfin": "jellyfin/jellyfin:12.4"
},
"live_compose_image_lines": [
"image: jellyfin/jellyfin:10.11.11"
],
"docker_inspect": [
"jellyfin jellyfin/jellyfin:10.11.11 running=true restarts=0"
]
},
"running_image_after": "jellyfin/jellyfin:10.11.11",
"seed_after_undo": true,
"verdict": "proven",
"why": "12.4 started on the data and failed its check; the box undid it: 10.11.11 runs again and the seeded user signs in (a wrong password refused)",
"drill_head_after": "6d5751dbdce22938c6c4af7f1bba66c7fd6958bf",
"drill_tree_equal_to_before": true,
"log": [
"17:06:00 drill commit c99cdeca5363: UNDO-PROOF setup: jellyfin at FROM (temporary, reverted at the end) (push rc=0)",
"17:06:09 [5] the box's drill mirror now at c99cdeca",
"17:13:43 [sync] the badge NEVER caught up to jellyfin/jellyfin:10.11.11 in 454.1s \u2014 catalog_images = None",
"17:13:43 [1] required fields filled beyond DOMAIN/SUBDOMAIN: ['HDD_PATH']",
"17:13:43 [1] deploy -> 202 {'ok': True, 'message': 'Telep\u00edt\u00e9s elind\u00edtva \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}",
"17:14:38 [1] deployed, controller state=running, pinned={'jellyfin': 'jellyfin/jellyfin:10.11.11'}",
"17:14:39 gate: jellyfin is gated \u2014 passed as the household (cookie set)",
"17:14:39 jellyfin: seeded first user drilld1744440",
"17:14:41 jellyfin: sign-in as the seeded user http=200 token=True (wrong password refused: http 401)",
"17:14:42 drill commit 3dcb73dc7679: UNDO-PROOF: jellyfin 12.4 whose checks fail (temporary, reverted at the end) (push rc=0)",
"17:14:50 [5] the box's drill mirror now at 3dcb73dc",
"17:14:55 [6] Update -> 202 {'ok': True, 'data': {'accepted': True, 'completed': False}, 'message': 'Friss\u00edt\u00e9s elindult \u2013 az \u00e1llapot a k\u00e1rty\u00e1n k\u00f6vethet\u0151'}",
"17:14:55 + 0.0s phase=backing-up label=Biztons\u00e1gi ment\u00e9s k\u00e9sz\u00fcl a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None",
"17:14:58 + 3.1s phase=safety-dump label=Adatb\u00e1zis pillanatk\u00e9p\u2026 err=None hold=None",
"17:14:59 + 4.1s phase=pulling label=\u00daj verzi\u00f3 let\u00f6lt\u00e9se\u2026 err=None hold=None",
"17:15:32 + 36.9s phase=copying label=Az adatok m\u00e1sol\u00e1sa a friss\u00edt\u00e9s el\u0151tt\u2026 err=None hold=None",
"17:15:35 + 40.0s phase=starting label=Ind\u00edt\u00e1s az \u00faj verzi\u00f3val\u2026 err=None hold=None",
"17:15:36 + 41.0s phase=verifying label=M\u0171k\u00f6d\u00e9s ellen\u0151rz\u00e9se\u2026 err=None hold=None",
"17:20:39 + 343.5s phase=undoing label=Vissza\u00e1ll\u00edt\u00e1s az el\u0151z\u0151 v\u00e1ltozatra\u2026 err=None hold=None",
"17:20:57 + 362.1s phase=undone label=Vissza\u00e1ll\u00edtva az el\u0151z\u0151 v\u00e1ltozatra err=None hold=None",
"17:21:20 jellyfin: sign-in as the seeded user http=200 token=True (wrong password refused: http 401)",
"17:21:20 RESULT proven \u2014 12.4 started on the data and failed its check; the box undid it: 10.11.11 runs again and the seeded user signs in (a wrong password refused)",
"17:21:21 [X] stop -> 200 {'ok': True, 'message': 'Stack jellyfin stop completed'}",
"17:21:53 [X] remove (with drive data) -> 200 {'ok': True, 'data': {'removed': 'jellyfin', 'volumes_removed': ['jellyfin_jellyfin_cache', 'jellyfin_jellyfin_config'], 'hdd_paths_removed': [], 'hdd_paths_pre",
"17:22:01 [X] after remove: deployed=False leftovers=''",
"17:22:02 drill revert 3dcb73dc7679: rc=0",
"17:22:02 drill revert c99cdeca5363: rc=0",
"17:22:11 [5] the box's drill mirror now at 6d5751db",
"17:22:11 drill templates/jellyfin equal to before: True"
]
}