mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-10 10:25:03 +00:00
Load the Changes diff quickly while the daemon reconciles worktrees (#9243)
* fix(server): keep cold diffs out from behind background git fan-out Add a background lane to the git process scheduler and run reconciliation checkout reads, observation-driven workspace refreshes and background fetches in it. Bound reconciliation checkout reads to four at a time. Stop the Linux file observer's startup scan from reporting existing files as creates, which made every cold diff compute and discard its first revision. * fix(server): pick the git job when its start token fires Background jobs that already reserved a start-rate token no longer start ahead of normal work submitted after them. * fix(server): re-read the working tree once its watcher covers it The Linux observer no longer reports pre-existing files at startup, so an edit made between a workspace's first snapshot and its watcher subscribing reached no consumer. WorkspaceGit now runs one background working-tree read once observation setup completes with a live watcher. Demand refreshes keep the caller's Git lane instead of forcing normal, so user actions running at high priority are not demoted. Scope the populated-tree observer test to Linux (FSEvents replays recent writes) and update the observer benchmark test, which expected the removed startup batch. * fix(server): re-read checkout metadata once observation covers it A branch switch made before the Git metadata watcher subscribed left the cached branch stale. The post-coverage read now refreshes structure as well as the working tree, matching the refresh the Linux startup events used to trigger.
This commit is contained in:
@@ -8,10 +8,10 @@ import { expect, test } from "vitest";
|
||||
|
||||
const execFileAsync = promisify(execFile);
|
||||
|
||||
// Linux delivers the existing inventory as one batch. Other backends have
|
||||
// different startup semantics, so they do not exercise this regression.
|
||||
// The Linux backend scans the existing inventory at startup without reporting
|
||||
// it. Other backends have different startup semantics.
|
||||
test.skipIf(process.platform !== "linux").each(["healthy", "directory-churn"])(
|
||||
"%s benchmark collects a startup batch larger than the argument limit",
|
||||
"%s benchmark over a large pre-populated tree reports only later edits",
|
||||
async (mode) => {
|
||||
const temporaryRoot = await mkdtemp(join(tmpdir(), "paseo-watch-benchmark-test-"));
|
||||
try {
|
||||
@@ -47,7 +47,7 @@ test.skipIf(process.platform !== "linux").each(["healthy", "directory-churn"])(
|
||||
},
|
||||
);
|
||||
const measurement = JSON.parse(stdout);
|
||||
expect(measurement.startupEvents).toBe(40_000);
|
||||
expect(measurement.startupEvents).toBe(0);
|
||||
expect(measurement.deliveredEvents).toBeGreaterThan(measurement.startupEvents);
|
||||
expect(measurement.missedTrackedPaths).toBe(0);
|
||||
expect(measurement.ignoredEvents).toBe(0);
|
||||
|
||||
Reference in New Issue
Block a user