fix(observability): avoid false stopped Flynn status outside systemd

This commit is contained in:
William Valentin
2026-02-22 21:02:17 -08:00
parent 0a5972a732
commit 7206a94871
2 changed files with 78 additions and 7 deletions
+15 -7
View File
@@ -130,6 +130,10 @@ interface SampleRecord {
restartCount: number;
}
function isGatewayRunningUnderSystemd(): boolean {
return Boolean(process.env.INVOCATION_ID || process.env.JOURNAL_STREAM || process.env.SYSTEMD_EXEC_PID);
}
function defaultRunner(
command: string,
args: string[],
@@ -665,24 +669,28 @@ export class ObservabilityCollector {
const snapshots: SourceSnapshot[] = [];
const flynnMapped = mapSystemdStatus(flynnStatus.activeState, flynnStatus.error);
const fallbackToProcessRuntime = !isGatewayRunningUnderSystemd() && flynnMapped.status !== 'running';
const flynnStatusValue = fallbackToProcessRuntime ? 'running' : flynnMapped.status;
const flynnStateCode = fallbackToProcessRuntime ? STATE_RUNNING : flynnMapped.stateCode;
const flynnHealthCode = fallbackToProcessRuntime ? HEALTH_HEALTHY : flynnMapped.healthCode;
snapshots.push({
source: {
id: 'systemd:flynn',
name: 'Flynn daemon',
kind: 'systemd_system',
runtime: 'systemd_system',
status: flynnMapped.status,
status: flynnStatusValue,
graphCapable: true,
logCapable: true,
logCapable: !fallbackToProcessRuntime,
metadata: {
unit: this.flynnSystemdUnit,
state: flynnStatus.activeState,
statusText: flynnStatus.statusText,
state: fallbackToProcessRuntime ? 'running' : flynnStatus.activeState,
statusText: fallbackToProcessRuntime ? 'running (gateway process)' : flynnStatus.statusText,
},
},
stateCode: flynnMapped.stateCode,
healthCode: flynnMapped.healthCode,
hasError: Boolean(flynnStatus.error),
stateCode: flynnStateCode,
healthCode: flynnHealthCode,
hasError: fallbackToProcessRuntime ? false : Boolean(flynnStatus.error),
fingerprint: flynnStatus.pid ? `pid:${flynnStatus.pid}` : null,
});