Brennan Benson
10d410455e
Repair only the damaged parts of a profile instead of rolling back the whole profile ( #30931 )
...
* fix(profile-state): repair only the damaged sections instead of rolling back the whole profile
One profile-state row whose checksum no longer matches made Orca refuse to open the
whole profile, and the only recovery swapped in a whole backup, losing every newer
change in every section.
Startup now checks each section on its own. When only some sections are damaged, the
dialog offers "Repair and Restart": Orca copies the damaged database aside, then replaces
just those sections with the newest backup copy that passes its checks, keeping every
intact section's current value, in one checked write. Headless starts name the damaged
sections and `orca profile state rollback --repair`. Whole-file damage keeps the existing
backup rollback.
Also turns on checkpoint_fullfsync for the profile database: on macOS plain fsync leaves
the drive cache unflushed, which can leave a long row's pages from two versions after a
power loss or forced shutdown.
Tracked in STA-10893.
* test(profile-state): pin the repair dialog's text and buttons
* fix(profile-state): list the repair module for the CLI typecheck; keep section labels out of the layout-writer count
* fix: validate section repair admission before decoding payloads
* fix(profile-state): share backup handles during section repair
2026-10-21 16:22:44 -07:00
..
2026-10-21 16:22:44 -07:00
2026-10-20 19:54:55 -07:00
2026-10-21 16:22:44 -07:00
2026-09-16 12:03:38 -04:00
2026-10-09 22:22:01 -07:00
2026-10-20 16:45:05 -07:00
2026-10-12 02:14:43 -07:00
2026-10-20 16:45:05 -07:00
2026-10-12 02:14:43 -07:00
2026-09-29 21:38:09 -07:00
2026-10-02 17:23:11 -07:00
2026-10-12 00:38:00 -07:00
2026-09-16 12:03:38 -04:00
2026-09-29 21:38:09 -07:00
2026-10-20 15:12:28 -07:00
2026-08-07 23:02:29 -07:00
2026-10-16 19:38:32 -07:00
2026-08-26 09:50:12 -07:00
2026-10-19 21:31:13 -07:00
2026-08-26 09:50:12 -07:00
2026-08-26 09:50:12 -07:00
2026-10-15 23:24:11 -07:00
2026-10-15 23:24:11 -07:00
2026-06-07 17:49:01 -07:00
2026-10-14 16:14:27 -07:00
2026-09-16 10:31:01 -07:00
2026-09-16 10:31:01 -07:00
2026-09-29 21:38:09 -07:00
2026-10-20 20:47:50 -07:00
2026-10-16 19:02:47 -07:00
2026-10-19 03:12:30 -07:00
2026-10-11 18:30:03 -07:00
2026-10-11 18:30:03 -07:00
2026-09-29 10:22:27 -07:00
2026-09-29 10:22:27 -07:00
2026-10-14 03:03:50 -07:00
2026-10-14 03:21:31 -07:00
2026-10-09 22:22:01 -07:00
2026-10-10 15:16:18 -07:00
2026-10-10 15:16:18 -07:00
2026-09-29 21:38:09 -07:00
2026-10-10 15:16:18 -07:00
2026-10-03 00:50:46 -07:00
2026-10-03 00:50:46 -07:00
2026-09-29 01:21:53 -07:00
2026-06-28 21:01:09 -07:00
2026-06-28 21:01:09 -07:00
2026-06-28 21:01:09 -07:00
2026-10-19 12:18:31 -07:00
2026-10-19 12:18:31 -07:00
2026-10-20 16:45:05 -07:00
2026-09-06 14:34:03 -04:00
2026-10-19 03:12:30 -07:00
2026-08-18 11:29:26 -07:00
2026-10-18 19:48:36 -07:00
2026-10-13 20:25:00 -07:00
2026-10-20 15:12:28 -07:00
2026-10-18 19:48:36 -07:00
2026-09-05 14:35:45 -07:00
2026-10-19 03:12:30 -07:00
2026-10-20 16:45:05 -07:00
2026-10-08 13:41:11 -07:00
2026-08-26 09:50:12 -07:00
2026-10-19 21:31:13 -07:00
2026-08-15 00:54:20 -07:00
2026-08-26 09:50:12 -07:00
2026-08-26 09:50:12 -07:00
2026-08-26 09:50:12 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-10-17 00:37:16 -07:00
2026-10-14 03:03:50 -07:00
2026-10-19 12:18:31 -07:00
2026-08-26 15:43:02 -07:00
2026-10-17 00:27:55 -07:00
2026-09-28 15:19:44 -07:00
2026-10-18 15:22:37 -07:00
2026-10-20 17:12:19 -07:00
2026-10-14 03:21:31 -07:00
2026-10-09 22:22:01 -07:00
2026-10-11 20:16:33 -07:00
2026-10-11 06:31:43 -07:00
2026-08-15 00:54:20 -07:00
2026-10-17 00:27:55 -07:00
2026-08-18 14:12:24 -07:00
2026-09-26 21:22:13 -07:00
2026-10-12 02:14:43 -07:00
2026-10-16 19:02:47 -07:00
2026-08-31 19:08:05 -04:00
2026-08-31 19:08:05 -04:00
2026-10-20 02:57:14 -07:00
2026-10-20 02:57:14 -07:00
2026-10-03 00:51:19 -07:00
2026-10-03 00:51:19 -07:00
2026-09-18 00:11:33 -04:00
2026-10-03 01:59:38 -07:00
2026-10-14 16:14:27 -07:00
2026-10-19 12:18:31 -07:00
2026-10-14 03:03:50 -07:00
2026-10-14 03:03:50 -07:00
2026-10-14 03:03:50 -07:00
2026-10-14 03:21:31 -07:00
2026-08-21 14:28:55 -07:00
2026-10-17 13:14:48 -07:00
2026-10-17 13:14:48 -07:00
2026-10-14 03:03:50 -07:00
2026-08-13 20:44:16 -07:00
2026-10-17 00:27:55 -07:00
2026-09-05 20:27:29 -04:00
2026-10-18 00:24:34 -07:00
2026-10-18 23:12:27 -07:00
2026-10-01 10:33:49 -07:00
2026-09-06 20:24:21 -07:00
2026-09-06 20:24:21 -07:00
2026-10-15 23:26:59 -07:00
2026-10-15 23:26:59 -07:00
2026-09-25 22:47:33 -07:00
2026-08-13 22:48:24 -07:00
2026-10-18 15:22:37 -07:00
2026-08-30 01:23:27 -07:00
2026-08-30 01:23:27 -07:00
2026-10-09 22:22:01 -07:00
2026-10-14 03:03:50 -07:00
2026-10-14 03:21:31 -07:00
2026-09-03 14:43:05 -07:00
2026-06-29 22:38:29 -07:00
2026-09-06 14:34:03 -04:00
2026-09-06 14:34:03 -04:00
2026-10-18 19:48:36 -07:00
2026-10-19 03:47:23 -07:00
2026-09-30 14:26:23 -07:00
2026-10-15 22:21:36 -07:00
2026-10-11 03:58:58 -07:00
2026-10-02 17:23:11 -07:00
2026-09-16 12:03:38 -04:00
2026-10-19 03:12:30 -07:00
2026-10-16 19:02:47 -07:00
2026-10-11 20:16:33 -07:00
2026-09-29 10:46:58 -07:00
2026-06-07 17:49:01 -07:00
2026-10-18 23:12:27 -07:00
2026-09-06 14:34:03 -04:00
2026-10-17 23:24:02 -07:00
2026-09-06 14:34:03 -04:00
2026-10-14 16:14:27 -07:00
2026-10-18 19:48:36 -07:00
2026-10-18 15:25:48 -07:00
2026-08-18 22:51:37 -07:00
2026-10-16 19:02:47 -07:00
2026-07-10 19:17:01 -07:00
2026-07-10 19:17:01 -07:00
2026-10-18 22:12:37 -07:00
2026-10-20 02:57:14 -07:00
2026-10-18 22:12:37 -07:00
2026-10-18 22:12:37 -07:00
2026-10-07 03:15:06 -07:00
2026-10-07 03:15:06 -07:00
2026-10-09 20:36:36 -07:00
2026-09-06 14:34:03 -04:00
2026-08-30 16:36:20 -07:00