Say fallback, not failover — the synonym was silently matching nothing in three renderers, plus retrying probes and a 2-minute handback window

This commit is contained in:
Gmer4Lfe
2026-08-22 13:43:30 -04:00
parent f1ba418aa8
commit ac17be2cd9
9 changed files with 85 additions and 29 deletions
+4 -4
View File
@@ -223,7 +223,7 @@ if (vv_ai_ui_on()) vv_ai_chat_assets();
<div class="vv-fb-ctrl-row">
<div>
<div class="vv-fb-ctrl-lbl">Fallback</div>
<div class="vv-fb-ctrl-sub">Mutual container failover between nodes</div>
<div class="vv-fb-ctrl-sub">Mutual container fallback between nodes</div>
</div>
<div class="vv-fb-tog" id="vv-fb-en-tog" onclick="vvFbToggle(this,'FALLBACK_ENABLED')"></div>
</div>
@@ -680,7 +680,7 @@ function _verdict(data) {
if (!data.partnership_enabled)
return void (el.innerHTML = '<span style="color:#ef5350;">PARTNERSHIP_ENABLED=false</span> — all cross-server operations are disabled.');
if (!data.fb_enabled)
return void (el.innerHTML = '<span style="color:#ffb74d;">FALLBACK_ENABLED=false</span> — nothing will fail over. Arming it takes effect at the next array start.');
return void (el.innerHTML = '<span style="color:#ffb74d;">FALLBACK_ENABLED=false</span> — nothing will fall back. Arming it takes effect at the next array start.');
const inFb = nodes.filter(n => (n.state?.state) === 'FALLBACK');
const live = nodes.filter(n => n.proc?.running && n.proc.mode === 'live');
@@ -699,7 +699,7 @@ function _verdict(data) {
: `<span style="color:#4caf50;">Armed</span> · ${up}/${nodes.length} node${nodes.length!==1?'s':''} running`;
if (dry.length && !live.length)
s += ` — <span style="color:#4a9eff;">all previewing (dry run), nothing would actually fail over</span>`;
s += ` — <span style="color:#4a9eff;">all previewing (dry run), nothing would actually fall back</span>`;
else if (dry.length)
s += ` · <span style="color:#4a9eff;">${dry.map(n=>n.id).join(', ')} previewing (dry run)</span>`;
@@ -898,7 +898,7 @@ window.vvFbSaveSettings = function() {
};
// ── Failover coverage picker ──────────────────────────────────────────────────
// ── Fallback coverage picker ──────────────────────────────────────────────────
// Holds the whole edit in memory and writes all four tiers in one POST. Per-row saves would
// leave the four arrays briefly disagreeing, and fallback.sh reads them as a set.
let _vvFbCov = null; // { containers:[], cover:{name:tier}, missing:[] }