Limit daemon-wide Git process pressure (#2797)
* perf(server): bound Git process starts Git refresh bursts could keep creating short-lived processes at the concurrency ceiling, causing sustained process churn on constrained hosts. Apply one daemon-global start-rate and concurrency policy to every Git command while preserving the legacy concurrency environment variable. * build(nix): update npm dependency hash * fix(server): hold Git slots until process exit * fix(server): enforce Git limits across process lifetime * fix(server): align Git metrics with process exit * Fix Git limiter test deadlocks * Tune default Git process rate
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
import { describe, expect, test } from "vitest";
|
||||
import { GitCommandRuntimeMetricsWindow } from "./git-command-runtime-metrics.js";
|
||||
|
||||
function createMetricsWindow(concurrencyLimit = 2) {
|
||||
function createMetricsWindow(concurrencyLimit = 2, maxProcessesPerSecond = 8) {
|
||||
let now = 1_000;
|
||||
return {
|
||||
metrics: new GitCommandRuntimeMetricsWindow(concurrencyLimit, () => now),
|
||||
metrics: new GitCommandRuntimeMetricsWindow(
|
||||
{ concurrencyLimit, maxProcessesPerSecond },
|
||||
() => now,
|
||||
),
|
||||
advance(ms: number) {
|
||||
now += ms;
|
||||
},
|
||||
@@ -42,6 +45,7 @@ describe("GitCommandRuntimeMetricsWindow", () => {
|
||||
|
||||
expect(metrics.snapshotAndReset()).toMatchObject({
|
||||
concurrencyLimit: 1,
|
||||
maxProcessesPerSecond: 8,
|
||||
active: 1,
|
||||
pending: 1,
|
||||
peakActive: 1,
|
||||
|
||||
Reference in New Issue
Block a user