fix: keep all follower status compact
This commit is contained in:
@@ -42,6 +42,8 @@ Target-side state summaries used by `status`, `events`, `logs` and `debug-step s
|
|||||||
|
|
||||||
Follower-scoped commands such as `status --follower`, `events --follower`, `logs --follower` and `debug-step --follower` must ask the target summary helper for only that follower's state. Do not fetch every follower and filter locally at the operator side; multi-follower summaries have different size budgets and should use lower per-follower stage limits.
|
Follower-scoped commands such as `status --follower`, `events --follower`, `logs --follower` and `debug-step --follower` must ask the target summary helper for only that follower's state. Do not fetch every follower and filter locally at the operator side; multi-follower summaries have different size budgets and should use lower per-follower stage limits.
|
||||||
|
|
||||||
|
Multi-follower status summaries should omit per-follower `command.payload`/native drill-down payloads entirely; those belong to follower-scoped `events`/`logs`/`debug-step` queries. Default all-follower status must remain parseable below the transport stdout limit.
|
||||||
|
|
||||||
`scripts/src/cicd.ts` should stay a thin branch-follower route/orchestration entry, not a catch-all implementation file. Rendering, debug steps, controller manifests, native K8s helpers, adapter-specific trigger/status logic and large data compactors must live in responsibility-specific modules before `cicd.ts` approaches the 3000-line hard split point.
|
`scripts/src/cicd.ts` should stay a thin branch-follower route/orchestration entry, not a catch-all implementation file. Rendering, debug steps, controller manifests, native K8s helpers, adapter-specific trigger/status logic and large data compactors must live in responsibility-specific modules before `cicd.ts` approaches the 3000-line hard split point.
|
||||||
|
|
||||||
`status-read`, `events`, `logs` and debug summaries must expose compact closeout gate details when a follower is not aligned: git-mirror readiness, Tekton PipelineRun condition, Argo sync/health, runtime target sha/readiness and short errors. Repeating only phase/observed/target/message is a visibility defect and must be fixed before further rollout tuning.
|
`status-read`, `events`, `logs` and debug summaries must expose compact closeout gate details when a follower is not aligned: git-mirror readiness, Tekton PipelineRun condition, Argo sync/health, runtime target sha/readiness and short errors. Repeating only phase/observed/target/message is a visibility defect and must be fixed before further rollout tuning.
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ function readConfigMapViaKubectl() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function compactStateText(text) {
|
function compactStateText(text, includeCommand) {
|
||||||
if (typeof text !== "string" || text.length === 0) return null;
|
if (typeof text !== "string" || text.length === 0) return null;
|
||||||
let state;
|
let state;
|
||||||
try {
|
try {
|
||||||
@@ -79,7 +79,7 @@ function compactStateText(text) {
|
|||||||
} catch {
|
} catch {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return {
|
const compact = {
|
||||||
id: stringOrNull(state.id),
|
id: stringOrNull(state.id),
|
||||||
adapter: stringOrNull(state.adapter),
|
adapter: stringOrNull(state.adapter),
|
||||||
enabled: state.enabled === true,
|
enabled: state.enabled === true,
|
||||||
@@ -97,8 +97,9 @@ function compactStateText(text) {
|
|||||||
timings: compactTimings(state.timings),
|
timings: compactTimings(state.timings),
|
||||||
warnings: arrayStrings(state.warnings).slice(0, 6),
|
warnings: arrayStrings(state.warnings).slice(0, 6),
|
||||||
stateFormat: stringOrNull(state.stateFormat),
|
stateFormat: stringOrNull(state.stateFormat),
|
||||||
command: compactCommand(state.command),
|
|
||||||
};
|
};
|
||||||
|
if (includeCommand) compact.command = compactCommand(state.command);
|
||||||
|
return compact;
|
||||||
}
|
}
|
||||||
|
|
||||||
function compactCommand(command) {
|
function compactCommand(command) {
|
||||||
@@ -335,11 +336,12 @@ const valueBytes = {};
|
|||||||
|
|
||||||
if (result.ok && result.present) {
|
if (result.ok && result.present) {
|
||||||
const data = recordOrNull(result.object?.data) || {};
|
const data = recordOrNull(result.object?.data) || {};
|
||||||
|
const includeCommand = followerIds.length === 1;
|
||||||
for (const id of followerIds) {
|
for (const id of followerIds) {
|
||||||
const text = typeof data[id] === "string" ? data[id] : "";
|
const text = typeof data[id] === "string" ? data[id] : "";
|
||||||
if (text.length === 0) continue;
|
if (text.length === 0) continue;
|
||||||
valueBytes[id] = Buffer.byteLength(text, "utf8");
|
valueBytes[id] = Buffer.byteLength(text, "utf8");
|
||||||
const compact = compactStateText(text);
|
const compact = compactStateText(text, includeCommand);
|
||||||
if (compact === null) errors.push(`${id}: invalid state json`);
|
if (compact === null) errors.push(`${id}: invalid state json`);
|
||||||
else stateByFollower[id] = compact;
|
else stateByFollower[id] = compact;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user