


























@@ -66,13 +66,16 @@ function extractErrorMessage(err: unknown): string | undefined {
6666return undefined;
6767}
686869-function logRemoteBinProbeFailure(
69+type RemoteBinProbeLogContext = {
70+command?: string;
71+timeoutMs?: number;
72+requiredBinCount?: number;
73+};
74+75+function resolveRemoteBinProbeLogContext(
7076nodeId: string,
71-err: unknown,
72-context?: { command?: string; timeoutMs?: number; requiredBinCount?: number },
73-) {
74-const message = extractErrorMessage(err);
75-const label = describeNode(nodeId);
77+context?: RemoteBinProbeLogContext,
78+): { label: string; details: string } {
7679const details = [
7780context?.command ? `command=${context.command}` : undefined,
7881typeof context?.timeoutMs === "number" ? `timeoutMs=${context.timeoutMs}` : undefined,
@@ -83,6 +86,25 @@ function logRemoteBinProbeFailure(
8386]
8487.filter(Boolean)
8588.join(" ");
89+return { label: describeNode(nodeId), details };
90+}
91+92+function logRemoteBinProbeFailure(
93+nodeId: string,
94+err: unknown,
95+context?: RemoteBinProbeLogContext,
96+phase: "preflight" | "probe" = "probe",
97+) {
98+const message = extractErrorMessage(err);
99+const { label, details } = resolveRemoteBinProbeLogContext(nodeId, context);
100+if (phase === "preflight") {
101+log.info(
102+`remote bin probe skipped: node connectivity unavailable (${label}; ${details}): ${
103+ message ?? "unknown"
104+ }`,
105+);
106+return;
107+}
86108// Node unavailable errors (not connected or disconnected mid-operation) are expected
87109// when nodes have transient connections - log at info level instead of warn
88110if (message?.includes("node not connected") || message?.includes("node disconnected")) {
@@ -98,30 +120,6 @@ function logRemoteBinProbeFailure(
98120log.warn(`remote bin probe error (${label}; ${details}): ${message ?? "unknown"}`);
99121}
100122101-function logRemoteBinProbePreflightFailure(
102-nodeId: string,
103-err: unknown,
104-context?: { command?: string; timeoutMs?: number; requiredBinCount?: number },
105-) {
106-const message = extractErrorMessage(err);
107-const label = describeNode(nodeId);
108-const details = [
109-context?.command ? `command=${context.command}` : undefined,
110-typeof context?.timeoutMs === "number" ? `timeoutMs=${context.timeoutMs}` : undefined,
111-typeof context?.requiredBinCount === "number"
112- ? `requiredBins=${context.requiredBinCount}`
113- : undefined,
114-`connected=${remoteNodes.get(nodeId)?.connected === true ? "yes" : "no"}`,
115-]
116-.filter(Boolean)
117-.join(" ");
118-log.info(
119-`remote bin probe skipped: node connectivity unavailable (${label}; ${details}): ${
120- message ?? "unknown"
121- }`,
122-);
123-}
124-125123function isMacPlatform(platform?: string, deviceFamily?: string): boolean {
126124const platformNorm = normalizeLowercaseStringOrEmpty(platform);
127125const familyNorm = normalizeLowercaseStringOrEmpty(deviceFamily);
@@ -392,11 +390,16 @@ async function refreshRemoteNodeBinsUncoalesced(params: {
392390return;
393391}
394392const cleared = clearRemoteNodeBins(params.nodeId);
395-logRemoteBinProbePreflightFailure(params.nodeId, connectivity.error.message, {
396-command: "websocket.ping",
397-timeoutMs: connectivityTimeoutMs,
398-requiredBinCount: binsList.length,
399-});
393+logRemoteBinProbeFailure(
394+params.nodeId,
395+connectivity.error.message,
396+{
397+command: "websocket.ping",
398+timeoutMs: connectivityTimeoutMs,
399+requiredBinCount: binsList.length,
400+},
401+"preflight",
402+);
400403if (cleared) {
401404bumpSkillsSnapshotVersion({ reason: "remote-node" });
402405}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。