mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 18:48:27 +00:00
Gateway: emit one-shot operator events for secrets degraded/recovered
This commit is contained in:
committed by
Peter Steinberger
parent
e45729a430
commit
eb855f75ce
@@ -19,6 +19,7 @@ import {
|
|||||||
writeConfigFile,
|
writeConfigFile,
|
||||||
} from "../config/config.js";
|
} from "../config/config.js";
|
||||||
import { applyPluginAutoEnable } from "../config/plugin-auto-enable.js";
|
import { applyPluginAutoEnable } from "../config/plugin-auto-enable.js";
|
||||||
|
import { resolveMainSessionKey } from "../config/sessions.js";
|
||||||
import { clearAgentRunContext, onAgentEvent } from "../infra/agent-events.js";
|
import { clearAgentRunContext, onAgentEvent } from "../infra/agent-events.js";
|
||||||
import {
|
import {
|
||||||
ensureControlUiAssetsBuilt,
|
ensureControlUiAssetsBuilt,
|
||||||
@@ -38,6 +39,7 @@ import {
|
|||||||
refreshRemoteBinsForConnectedNodes,
|
refreshRemoteBinsForConnectedNodes,
|
||||||
setSkillsRemoteRegistry,
|
setSkillsRemoteRegistry,
|
||||||
} from "../infra/skills-remote.js";
|
} from "../infra/skills-remote.js";
|
||||||
|
import { enqueueSystemEvent } from "../infra/system-events.js";
|
||||||
import { scheduleGatewayUpdateCheck } from "../infra/update-startup.js";
|
import { scheduleGatewayUpdateCheck } from "../infra/update-startup.js";
|
||||||
import { startDiagnosticHeartbeat, stopDiagnosticHeartbeat } from "../logging/diagnostic.js";
|
import { startDiagnosticHeartbeat, stopDiagnosticHeartbeat } from "../logging/diagnostic.js";
|
||||||
import { createSubsystemLogger, runtimeForLogger } from "../logging/subsystem.js";
|
import { createSubsystemLogger, runtimeForLogger } from "../logging/subsystem.js";
|
||||||
@@ -257,6 +259,16 @@ export async function startGatewayServer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
let secretsDegraded = false;
|
let secretsDegraded = false;
|
||||||
|
const emitSecretsStateEvent = (
|
||||||
|
code: "SECRETS_RELOADER_DEGRADED" | "SECRETS_RELOADER_RECOVERED",
|
||||||
|
message: string,
|
||||||
|
cfg: OpenClawConfig,
|
||||||
|
) => {
|
||||||
|
enqueueSystemEvent(`[${code}] ${message}`, {
|
||||||
|
sessionKey: resolveMainSessionKey(cfg),
|
||||||
|
contextKey: code,
|
||||||
|
});
|
||||||
|
};
|
||||||
const activateRuntimeSecrets = async (
|
const activateRuntimeSecrets = async (
|
||||||
config: OpenClawConfig,
|
config: OpenClawConfig,
|
||||||
params: { reason: "startup" | "reload" | "restart-check"; activate: boolean },
|
params: { reason: "startup" | "reload" | "restart-check"; activate: boolean },
|
||||||
@@ -270,9 +282,10 @@ export async function startGatewayServer(
|
|||||||
logSecrets.warn(`[${warning.code}] ${warning.message}`);
|
logSecrets.warn(`[${warning.code}] ${warning.message}`);
|
||||||
}
|
}
|
||||||
if (secretsDegraded) {
|
if (secretsDegraded) {
|
||||||
logSecrets.info(
|
const recoveredMessage =
|
||||||
"[SECRETS_RELOADER_RECOVERED] Secret resolution recovered; runtime remained on last-known-good during the outage.",
|
"Secret resolution recovered; runtime remained on last-known-good during the outage.";
|
||||||
);
|
logSecrets.info(`[SECRETS_RELOADER_RECOVERED] ${recoveredMessage}`);
|
||||||
|
emitSecretsStateEvent("SECRETS_RELOADER_RECOVERED", recoveredMessage, prepared.config);
|
||||||
}
|
}
|
||||||
secretsDegraded = false;
|
secretsDegraded = false;
|
||||||
return prepared;
|
return prepared;
|
||||||
@@ -280,6 +293,13 @@ export async function startGatewayServer(
|
|||||||
const details = String(err);
|
const details = String(err);
|
||||||
if (!secretsDegraded) {
|
if (!secretsDegraded) {
|
||||||
logSecrets.error(`[SECRETS_RELOADER_DEGRADED] ${details}`);
|
logSecrets.error(`[SECRETS_RELOADER_DEGRADED] ${details}`);
|
||||||
|
if (params.reason !== "startup") {
|
||||||
|
emitSecretsStateEvent(
|
||||||
|
"SECRETS_RELOADER_DEGRADED",
|
||||||
|
`Secret resolution failed; runtime remains on last-known-good snapshot. ${details}`,
|
||||||
|
config,
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
logSecrets.warn(`[SECRETS_RELOADER_DEGRADED] ${details}`);
|
logSecrets.warn(`[SECRETS_RELOADER_DEGRADED] ${details}`);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user