Skip to content

Commit 9bc73b0

Browse files
committed
heartbeat: avoid false sentry expectation when autostart is off
1 parent 36f3493 commit 9bc73b0

2 files changed

Lines changed: 42 additions & 12 deletions

File tree

pi/extensions/heartbeat.test.mjs

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,13 @@ function clampInt(value, min, max, fallback) {
2929
return Math.min(max, Math.max(min, parsed));
3030
}
3131

32-
function getExpectedSessions(envValue) {
32+
function getExpectedSessions(envValue, discovered = null) {
3333
if (envValue) return envValue.split(",").map((s) => s.trim()).filter(Boolean);
34+
if (discovered && discovered.success === true) {
35+
if (discovered.packagesCount > 0) {
36+
return discovered.autostartAliases;
37+
}
38+
}
3439
return ["sentry-agent"];
3540
}
3641

@@ -248,6 +253,33 @@ describe("heartbeat v2: getExpectedSessions", () => {
248253
const result = getExpectedSessions("sentry-agent,,monitor,");
249254
assert.deepEqual(result, ["sentry-agent", "monitor"]);
250255
});
256+
257+
it("returns discovered autostart aliases when discovery succeeds", () => {
258+
const result = getExpectedSessions(undefined, {
259+
success: true,
260+
packagesCount: 2,
261+
autostartAliases: ["sentry-agent"],
262+
});
263+
assert.deepEqual(result, ["sentry-agent"]);
264+
});
265+
266+
it("returns empty when discovery succeeds and all subagents are non-autostart", () => {
267+
const result = getExpectedSessions(undefined, {
268+
success: true,
269+
packagesCount: 2,
270+
autostartAliases: [],
271+
});
272+
assert.deepEqual(result, []);
273+
});
274+
275+
it("falls back to default when discovery succeeds but no packages exist", () => {
276+
const result = getExpectedSessions(undefined, {
277+
success: true,
278+
packagesCount: 0,
279+
autostartAliases: [],
280+
});
281+
assert.deepEqual(result, ["sentry-agent"]);
282+
});
251283
});
252284

253285
describe("heartbeat v2: computeBackoffMs", () => {

pi/extensions/heartbeat.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,15 @@ function getExpectedSessions(): string[] {
7979
try {
8080
const discovery = discoverSubagentPackages();
8181
const state = readSubagentState();
82-
const fromSubagents = discovery.packages
83-
.map((pkg) => ({
84-
effective: resolveEffectiveState(pkg, state),
85-
alias: pkg.manifest.ready_alias,
86-
}))
87-
.filter((entry) => entry.effective.installed && entry.effective.enabled && entry.effective.autostart)
88-
.map((entry) => entry.alias)
89-
.filter(Boolean);
90-
91-
if (fromSubagents.length > 0) {
92-
return fromSubagents;
82+
if (discovery.packages.length > 0) {
83+
return discovery.packages
84+
.map((pkg) => ({
85+
effective: resolveEffectiveState(pkg, state),
86+
alias: pkg.manifest.ready_alias,
87+
}))
88+
.filter((entry) => entry.effective.installed && entry.effective.enabled && entry.effective.autostart)
89+
.map((entry) => entry.alias)
90+
.filter(Boolean);
9391
}
9492
} catch {
9593
// fall back to historical default

0 commit comments

Comments
 (0)