Neil and Orca
414bdc9f86
perf(main): gate idle git-common polling + coarse-FS add/remove fix (re-open of #9882 ) ( #10074 )
...
* perf(main): gate idle git-common polling
Co-authored-by: Orca <help@stably.ai >
* fix(main): enumerate git-common worktrees every tick to catch coarse-FS add/remove
The worktrees-dir readdir was gated on the dir's mtime:ctime:ino:size signature, so on
a coarse-mtime/FAT filesystem a same-granule add+remove (all four fields collide) went
undetected until the ~30s index backstop. A single readdir of a small dir is negligible
next to the per-entry structural stats that already run every tick, so always enumerate —
the listing is the authoritative add/remove signal. The expensive per-entry index read
stays gated on each entry's own dir signature; onFullScan now reflects the ungated
index-metadata backstop fan-out (the real periodic cost) rather than the readdir.
Co-authored-by: Orca <help@stably.ai >
* fix(main): don't fabricate worktree deletions on a transient git-common readdir failure
Follow-up to always-enumerating the worktrees dir: the readdir catch-all treated ANY
error as an authoritative empty listing, so a transient failure (EIO/ESTALE/EMFILE,
network/SSH hiccup) emitted a false delete for every linked worktree (and a false create
next tick) — and enumerating every tick widened that exposure. Only ENOENT (dir truly
absent) now yields an empty listing; other errors retain the known entries so per-entry
stats still run and a real removal surfaces as that entry's own stat miss. Adds a
regression test (readdir → ENOTDIR) asserting no false delete.
Co-authored-by: Orca <help@stably.ai >
---------
Co-authored-by: Orca <help@stably.ai >
2026-07-22 20:41:30 -07:00
..
2026-06-23 11:31:41 -07:00
2026-07-14 00:15:34 -07:00
2026-07-17 12:47:04 -07:00
2026-07-14 00:15:34 -07:00
2026-07-14 00:15:34 -07:00
2026-07-14 00:15:34 -07:00
2026-07-14 00:15:34 -07:00
2026-05-30 21:20:37 -07:00
2026-07-20 17:10:07 -07:00
2026-07-20 17:10:07 -07:00
2026-07-20 17:10:07 -07:00
2026-07-20 01:14:17 -07:00
2026-07-20 03:18:24 -07:00
2026-05-31 04:21:57 -07:00
2026-07-11 21:43:20 -07:00
2026-07-11 01:31:13 -07:00
2026-07-16 19:11:34 -07:00
2026-07-16 19:11:34 -07:00
2026-06-28 22:33:07 -07:00
2026-06-02 18:10:31 -07:00
2026-07-12 23:19:15 -07:00
2026-07-12 23:19:15 -07:00
2026-05-29 16:06:33 -07:00
2026-06-02 18:10:31 -07:00
2026-07-18 15:16:43 -07:00
2026-07-18 15:16:43 -07:00
2026-05-11 14:20:08 -07:00
2026-05-25 14:54:47 -07:00
2026-07-15 14:30:33 -07:00
2026-07-15 14:30:33 -07:00
2026-07-20 17:11:23 -07:00
2026-07-20 22:55:22 -07:00
2026-07-20 22:55:22 -07:00
2026-07-21 14:55:14 -07:00
2026-07-21 14:55:14 -07:00
2026-05-30 11:29:01 -07:00
2026-05-30 11:29:01 -07:00
2026-07-06 02:12:32 -07:00
2026-06-16 23:11:27 -07:00
2026-06-19 17:14:55 -07:00
2026-06-19 17:14:55 -07:00
2026-07-06 00:03:31 -07:00
2026-07-06 00:03:31 -07:00
2026-07-06 00:03:31 -07:00
2026-06-30 11:31:55 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-06-30 11:31:55 -07:00
2026-04-20 19:41:12 -07:00
2026-07-11 02:03:14 -07:00
2026-07-11 02:03:14 -07:00
2026-07-06 16:43:43 -07:00
2026-07-20 03:18:24 -07:00
2026-07-18 23:01:29 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-07-12 16:53:43 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-07-06 02:12:32 -07:00
2026-07-10 03:06:44 -07:00
2026-07-16 13:26:15 -07:00
2026-07-16 13:26:15 -07:00
2026-07-16 13:26:15 -07:00
2026-07-16 13:26:15 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-06-29 22:38:29 -07:00
2026-06-17 16:08:14 -07:00
2026-06-29 22:38:29 -07:00
2026-05-20 01:35:56 -07:00
2026-05-20 01:35:56 -07:00
2026-07-10 13:48:35 -07:00
2026-07-10 13:48:35 -07:00
2026-06-29 22:38:29 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-06-10 21:14:53 -07:00
2026-07-13 19:12:30 -07:00
2026-06-29 22:38:29 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-20 03:18:24 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-05-21 02:49:16 -04:00
2026-05-21 02:49:16 -04:00
2026-06-17 16:08:14 -07:00
2026-06-17 16:08:14 -07:00
2026-07-20 18:55:45 -07:00
2026-07-20 18:55:45 -07:00
2026-06-28 18:05:29 -07:00
2026-06-29 22:38:29 -07:00
2026-07-10 00:11:27 -07:00
2026-06-29 22:38:29 -07:00
2026-06-29 22:38:29 -07:00
2026-07-16 00:26:51 -07:00
2026-05-21 19:10:16 -07:00
2026-05-21 19:10:16 -07:00
2026-07-09 22:23:56 -07:00
2026-07-09 22:23:56 -07:00
2026-06-29 22:38:29 -07:00
2026-07-10 21:22:18 -07:00
2026-07-10 21:22:18 -07:00
2026-06-29 22:38:29 -07:00
2026-06-29 12:27:30 -07:00
2026-05-20 17:20:16 -07:00
2026-06-29 22:38:29 -07:00
2026-04-26 21:42:06 -07:00
2026-07-05 01:15:16 -07:00
2026-07-05 01:15:16 -07:00
2026-07-22 14:05:37 -07:00
2026-07-22 14:05:37 -07:00
2026-07-17 15:59:38 -07:00
2026-07-16 13:26:15 -07:00
2026-07-17 15:59:38 -07:00
2026-06-29 22:38:29 -07:00
2026-06-29 22:38:29 -07:00
2026-07-09 19:30:23 -07:00
2026-05-30 02:46:28 -07:00
2026-07-14 19:15:50 -07:00
2026-07-20 03:18:24 -07:00
2026-05-08 14:17:50 -07:00
2026-06-02 18:10:31 -07:00
2026-07-09 02:13:13 -07:00
2026-07-09 02:13:13 -07:00
2026-07-09 02:13:13 -07:00
2026-07-17 15:27:39 -07:00
2026-07-17 15:27:39 -07:00
2026-07-12 18:15:15 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-12 18:15:15 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-12 18:15:15 -07:00
2026-07-12 18:15:15 -07:00
2026-07-15 15:23:35 -07:00
2026-07-12 18:15:15 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-12 18:15:15 -07:00
2026-07-12 21:34:59 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-16 21:59:44 -07:00
2026-07-16 21:59:44 -07:00
2026-07-16 21:59:44 -07:00
2026-07-20 03:18:24 -07:00
2026-07-18 15:16:43 -07:00
2026-07-09 17:08:35 -07:00
2026-07-18 15:16:43 -07:00
2026-06-15 19:41:45 -07:00
2026-06-28 15:08:13 -07:00
2026-06-17 16:08:14 -07:00
2026-07-11 21:21:18 -07:00
2026-07-11 21:21:18 -07:00
2026-06-29 22:38:29 -07:00
2026-07-18 15:16:43 -07:00
2026-07-08 14:34:16 -07:00
2026-06-29 22:38:29 -07:00
2026-07-10 17:27:47 -07:00
2026-07-19 17:31:34 -07:00
2026-07-14 00:15:34 -07:00
2026-07-20 03:18:24 -07:00
2026-07-10 17:27:47 -07:00
2026-07-10 17:27:47 -07:00
2026-07-02 18:41:23 -04:00
2026-06-19 17:14:55 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-07-10 00:11:27 -07:00
2026-07-10 00:11:27 -07:00
2026-06-30 00:28:07 -07:00
2026-06-30 00:28:07 -07:00
2026-07-22 17:17:59 -07:00
2026-07-22 17:17:59 -07:00
2026-05-31 06:42:33 -07:00
2026-05-15 12:32:07 -07:00
2026-06-29 22:38:29 -07:00
2026-07-06 02:12:32 -07:00
2026-06-03 09:48:03 -07:00
2026-06-29 22:38:29 -07:00
2026-07-20 01:14:17 -07:00
2026-07-20 01:14:17 -07:00
2026-07-15 19:14:22 -07:00
2026-07-15 19:14:22 -07:00
2026-07-03 19:40:45 -04:00
2026-07-03 19:40:45 -04:00
2026-07-20 18:55:45 -07:00
2026-07-03 19:40:45 -04:00
2026-07-20 18:55:45 -07:00
2026-06-29 22:38:29 -07:00
2026-06-17 16:08:14 -07:00
2026-05-17 22:24:38 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-06-14 01:48:26 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-06-29 22:38:29 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-05-27 16:22:03 -07:00
2026-07-11 03:02:29 -07:00
2026-07-15 19:09:14 -07:00
2026-07-15 22:09:37 -07:00
2026-07-12 23:43:33 -07:00
2026-07-12 14:09:15 -07:00
2026-07-22 17:17:59 -07:00
2026-07-22 17:17:59 -07:00
2026-07-19 17:31:34 -07:00
2026-07-19 17:31:34 -07:00
2026-05-01 13:25:22 -07:00
2026-06-19 12:31:11 -07:00
2026-07-03 19:43:38 -07:00
2026-07-06 20:46:48 -07:00
2026-07-20 03:18:24 -07:00
2026-06-29 22:38:29 -07:00
2026-07-04 21:31:51 -07:00
2026-07-22 18:25:05 -07:00
2026-07-22 18:25:05 -07:00
2026-04-09 12:28:59 -07:00
2026-07-20 03:18:24 -07:00
2026-07-20 03:18:24 -07:00
2026-07-14 15:23:06 -07:00
2026-07-14 15:23:06 -07:00
2026-07-20 17:11:23 -07:00
2026-07-20 17:11:23 -07:00
2026-07-20 17:11:23 -07:00
2026-07-17 16:16:17 -07:00
2026-07-17 16:16:17 -07:00
2026-07-19 20:25:52 -07:00
2026-07-08 14:34:16 -07:00
2026-07-08 14:34:16 -07:00
2026-07-20 17:11:23 -07:00
2026-07-20 17:11:23 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-09 16:24:20 -07:00
2026-07-09 16:24:20 -07:00
2026-06-28 11:38:23 -07:00
2026-06-28 11:38:23 -07:00
2026-06-28 11:38:23 -07:00
2026-06-28 11:38:23 -07:00
2026-07-09 16:24:20 -07:00
2026-07-09 16:24:20 -07:00
2026-06-28 11:38:23 -07:00
2026-07-03 17:21:50 -07:00
2026-05-08 10:50:43 -07:00
2026-05-31 09:29:44 -07:00
2026-05-31 09:29:44 -07:00
2026-05-21 13:22:37 -07:00
2026-05-21 13:22:37 -07:00
2026-07-13 05:40:02 -07:00
2026-07-13 05:40:02 -07:00
2026-07-13 05:40:02 -07:00
2026-07-22 20:41:30 -07:00
2026-07-22 20:38:35 -07:00
2026-07-11 01:31:13 -07:00
2026-07-22 20:38:35 -07:00
2026-07-22 20:38:35 -07:00
2026-06-15 19:58:55 -07:00
2026-06-23 11:07:49 -07:00
2026-07-22 17:11:55 -07:00
2026-06-15 19:58:55 -07:00
2026-07-13 15:47:17 -07:00
2026-07-22 20:41:30 -07:00
2026-07-22 20:41:30 -07:00
2026-07-22 20:38:35 -07:00
2026-07-12 23:43:33 -07:00
2026-07-12 23:43:33 -07:00
2026-07-12 23:43:33 -07:00
2026-06-14 23:23:31 -07:00
2026-05-14 00:42:07 -07:00
2026-06-29 22:38:29 -07:00
2026-07-06 02:12:32 -07:00
2026-07-10 20:52:24 -07:00
2026-06-29 22:38:29 -07:00
2026-07-13 01:10:38 -07:00
2026-07-10 20:52:24 -07:00
2026-06-19 17:14:55 -07:00
2026-06-19 17:14:55 -07:00
2026-06-07 19:51:36 -07:00
2026-06-07 19:51:36 -07:00
2026-07-20 03:18:24 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-15 15:23:35 -07:00
2026-07-22 15:52:42 -07:00
2026-07-22 15:52:42 -07:00
2026-07-15 15:23:35 -07:00