fix(observability): avoid false stopped Flynn status outside systemd
This commit is contained in:
@@ -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,
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user