46 lines
6.0 KiB
XML
46 lines
6.0 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="650" viewBox="0 0 1200 650" role="img" aria-labelledby="title desc">
|
|
<title id="title">Fleet agent durable upgrade states and recovery</title>
|
|
<desc id="desc">Preparing keeps the previous agent active; interruption selects the previous binary and fails, while recovery failure quarantines the updater. Activating covers stop, switch, strict start, and readiness; interruption enters rollback. Readiness commits immediately.</desc>
|
|
<defs>
|
|
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto"><path d="M0 0 10 5 0 10z" fill="#0f766e"/></marker>
|
|
<marker id="arrow-warn" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto"><path d="M0 0 10 5 0 10z" fill="#b45309"/></marker>
|
|
<marker id="arrow-bad" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto"><path d="M0 0 10 5 0 10z" fill="#be123c"/></marker>
|
|
<style>.sans{font-family:Inter,ui-sans-serif,system-ui,sans-serif}.mono{font-family:"JetBrains Mono",Consolas,monospace}</style>
|
|
</defs>
|
|
<rect width="1200" height="650" fill="#ffffff"/>
|
|
<g class="sans">
|
|
<text x="40" y="48" fill="#0f172a" font-size="29" font-weight="750">The durable journal controls recovery</text>
|
|
<text x="40" y="76" fill="#64748b" font-size="16">Every interruption before commit attempts to restore the previous binary. Rollback failure blocks new attempts.</text>
|
|
|
|
<rect x="35" y="110" width="520" height="230" rx="18" fill="#f0fdfa" stroke="#5eead4"/>
|
|
<text x="60" y="142" fill="#115e59" font-size="12" font-weight="750" letter-spacing="1.3">PREPARATION: PREVIOUS AGENT RECONCILES</text>
|
|
<rect x="85" y="195" width="170" height="76" rx="12" fill="#fff" stroke="#99f6e4"/><text x="170" y="226" text-anchor="middle" fill="#0f172a" font-size="18" font-weight="700" class="mono">no journal</text><text x="170" y="251" text-anchor="middle" fill="#64748b" font-size="13">existing target stays active</text>
|
|
<rect x="335" y="195" width="170" height="76" rx="12" fill="#0f766e"/><text x="420" y="226" text-anchor="middle" fill="#fff" font-size="18" font-weight="700" class="mono">preparing</text><text x="420" y="251" text-anchor="middle" fill="#ccfbf1" font-size="13">download, verify, probe</text>
|
|
<path d="M255 233H335" stroke="#0f766e" stroke-width="2.5" marker-end="url(#arrow)"/>
|
|
<text x="295" y="220" text-anchor="middle" fill="#115e59" font-size="12">upgrade request</text>
|
|
|
|
<rect x="610" y="110" width="555" height="230" rx="18" fill="#fff7ed" stroke="#fdba74"/>
|
|
<text x="635" y="142" fill="#9a3412" font-size="12" font-weight="750" letter-spacing="1.3">ACTIVATION: STOP, SWITCH, STRICT START</text>
|
|
<rect x="650" y="195" width="180" height="76" rx="12" fill="#b45309"/><text x="740" y="226" text-anchor="middle" fill="#fff" font-size="17" font-weight="700" class="mono">activating</text><text x="740" y="251" text-anchor="middle" fill="#ffedd5" font-size="12">not committed</text>
|
|
<rect x="930" y="195" width="180" height="76" rx="12" fill="#172554"/><text x="1020" y="226" text-anchor="middle" fill="#fff" font-size="17" font-weight="700" class="mono">committed</text><text x="1020" y="251" text-anchor="middle" fill="#bfdbfe" font-size="12">target retained</text>
|
|
<path d="M555 233H650" stroke="#b45309" stroke-width="2.5" marker-end="url(#arrow-warn)"/><text x="602" y="220" text-anchor="middle" fill="#9a3412" font-size="12">probe passes</text>
|
|
<path d="M830 233H930" stroke="#0f766e" stroke-width="2.5" marker-end="url(#arrow)"/><text x="880" y="220" text-anchor="middle" fill="#115e59" font-size="12">READY=1</text>
|
|
<text x="880" y="292" text-anchor="middle" fill="#64748b" font-size="12">immediate commit, no wait period</text>
|
|
|
|
<rect x="280" y="400" width="190" height="80" rx="12" fill="#be123c"/><text x="375" y="432" text-anchor="middle" fill="#fff" font-size="17" font-weight="700" class="mono">rolling-back</text><text x="375" y="458" text-anchor="middle" fill="#ffe4e6" font-size="13">restore previous target</text>
|
|
<path d="M740 271V350H470V420" fill="none" stroke="#be123c" stroke-width="2.5" marker-end="url(#arrow-bad)"/>
|
|
<text x="535" y="350" fill="#9f1239" font-size="13">activation interrupted before commit</text>
|
|
|
|
<rect x="85" y="535" width="180" height="72" rx="12" fill="#f1f5f9" stroke="#94a3b8"/><text x="175" y="565" text-anchor="middle" fill="#0f172a" font-size="18" font-weight="700" class="mono">failed</text><text x="175" y="588" text-anchor="middle" fill="#64748b" font-size="12">previous service selected</text>
|
|
<rect x="390" y="535" width="220" height="72" rx="12" fill="#fff1f2" stroke="#fb7185"/><text x="500" y="565" text-anchor="middle" fill="#9f1239" font-size="17" font-weight="700" class="mono">rollback-failed</text><text x="500" y="588" text-anchor="middle" fill="#be123c" font-size="12">hard quarantine</text>
|
|
<path d="M330 480V510H175V535" fill="none" stroke="#0f766e" stroke-width="2.5" marker-end="url(#arrow)"/><text x="235" y="505" fill="#115e59" font-size="12">restore and start succeed</text>
|
|
<path d="M420 271V365H175V535" fill="none" stroke="#64748b" stroke-width="2.2" marker-end="url(#arrow)"/><text x="210" y="385" fill="#475569" font-size="12">preparation interrupted: select previous, fail</text>
|
|
<path d="M455 271V380H500V535" fill="none" stroke="#be123c" stroke-width="2" marker-end="url(#arrow-bad)"/><text x="515" y="400" fill="#9f1239" font-size="12">restore or start fails</text>
|
|
<path d="M420 480V510H500V535" fill="none" stroke="#be123c" stroke-width="2.5" marker-end="url(#arrow-bad)"/><text x="500" y="505" fill="#9f1239" font-size="12">restore or start fails</text>
|
|
|
|
<text x="700" y="558" fill="#475569" font-size="14" font-weight="700">Durability sequence</text>
|
|
<text x="700" y="581" fill="#64748b" font-size="13">temporary write, file sync, atomic rename, directory sync</text>
|
|
<text x="700" y="610" fill="#64748b" font-size="13">No automatic rollback after committed.</text>
|
|
</g>
|
|
</svg>
|