<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Migrations on Strata Documentation</title><link>https://danchupin.github.io/strata/architecture/migrations/</link><description>Recent content in Migrations on Strata Documentation</description><generator>Hugo</generator><language>en</language><atom:link href="https://danchupin.github.io/strata/architecture/migrations/index.xml" rel="self" type="application/rss+xml"/><item><title>Binary consolidation</title><link>https://danchupin.github.io/strata/architecture/migrations/binary-consolidation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://danchupin.github.io/strata/architecture/migrations/binary-consolidation/</guid><description>&lt;h1 id="migrating-to-the-unified-strata-binary"&gt;Migrating to the unified &lt;code&gt;strata&lt;/code&gt; binary&lt;a class="anchor" href="#migrating-to-the-unified-strata-binary"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Strata used to ship eleven &lt;code&gt;cmd/*&lt;/code&gt; binaries — one gateway plus a long tail of
single-purpose worker daemons. The codebase now ships exactly one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;strata&lt;/code&gt; — the gateway plus every long-running background worker (selected
at startup via &lt;code&gt;STRATA_WORKERS=&lt;/code&gt; / &lt;code&gt;--workers=&lt;/code&gt;), with one-shot operator
commands available as &lt;code&gt;strata admin &amp;lt;subcommand&amp;gt;&lt;/code&gt; against the same binary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This guide is the operator-facing checklist for upgrading an existing deploy.
There is no schema migration, no data migration, and no env-var rename — the
move is purely a packaging change.&lt;/p&gt;</description></item><item><title>GC + lifecycle Phase 2</title><link>https://danchupin.github.io/strata/architecture/migrations/gc-lifecycle-phase-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://danchupin.github.io/strata/architecture/migrations/gc-lifecycle-phase-2/</guid><description>&lt;h1 id="migrating-to-gc--lifecycle-phase-2-sharded-leader-election"&gt;Migrating to gc / lifecycle Phase 2 (sharded leader-election)&lt;a class="anchor" href="#migrating-to-gc--lifecycle-phase-2-sharded-leader-election"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Phase 1 (cycle &lt;code&gt;ralph/gc-lifecycle-scale&lt;/code&gt;, commit &lt;code&gt;6561845&lt;/code&gt;) lifted the
per-leader concurrency cap via bounded &lt;code&gt;errgroup&lt;/code&gt; fan-out
(&lt;code&gt;STRATA_GC_CONCURRENCY&lt;/code&gt; / &lt;code&gt;STRATA_LIFECYCLE_CONCURRENCY&lt;/code&gt;). The leader was
still single-replica.&lt;/p&gt;
&lt;p&gt;Phase 2 (cycle &lt;code&gt;ralph/gc-lifecycle-scale-phase-2&lt;/code&gt;) shards the leader-election
space so multiple replicas process disjoint slices of the queue in parallel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gc gets &lt;code&gt;gc-leader-0..N-1&lt;/code&gt; lease keys driven by &lt;code&gt;STRATA_GC_SHARDS&lt;/code&gt; (default
&lt;code&gt;1&lt;/code&gt;, range &lt;code&gt;[1, 1024]&lt;/code&gt;). Each replica races for one or more of the
per-shard leases and drains only the entries it owns via
&lt;code&gt;Meta.ListGCEntriesShard&lt;/code&gt;. The legacy global &lt;code&gt;gc-leader&lt;/code&gt; lease is retired.&lt;/li&gt;
&lt;li&gt;lifecycle gets per-bucket leases (&lt;code&gt;lifecycle-leader-&amp;lt;bucketID&amp;gt;&lt;/code&gt;) plus a
distribution gate (&lt;code&gt;fnv32a(bucketID) % STRATA_GC_SHARDS == myReplicaID&lt;/code&gt;,
where &lt;code&gt;myReplicaID = min(GCFanOut.HeldShards())&lt;/code&gt;). The legacy global
&lt;code&gt;lifecycle-leader&lt;/code&gt; lease is retired.&lt;/li&gt;
&lt;li&gt;Backwards-compat: &lt;code&gt;STRATA_GC_SHARDS=1&lt;/code&gt; (default) reproduces Phase 1
behaviour byte-for-byte. Existing &lt;code&gt;make smoke&lt;/code&gt; / &lt;code&gt;make smoke-tikv&lt;/code&gt; /
&lt;code&gt;make smoke-lab-tikv&lt;/code&gt; continue to pass without configuration changes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This guide is the operator-facing checklist for the schema cutover and the
multi-replica rollout.&lt;/p&gt;</description></item><item><title>Compose collapse</title><link>https://danchupin.github.io/strata/architecture/migrations/compose-collapse/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://danchupin.github.io/strata/architecture/migrations/compose-collapse/</guid><description>&lt;h1 id="migrating-to-the-single-strata-compose-shape"&gt;Migrating to the single-strata compose shape&lt;a class="anchor" href="#migrating-to-the-single-strata-compose-shape"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;docker compose up -d&lt;/code&gt; used to bring up two strata services in parallel on
the same Cassandra metadata: a single-cluster &lt;code&gt;strata&lt;/code&gt; (port 9999, knew
only the &lt;code&gt;default&lt;/code&gt; RADOS cluster) and a profile-gated &lt;code&gt;strata-multi&lt;/code&gt;
(port 9998, knew &lt;code&gt;default&lt;/code&gt; + &lt;code&gt;cephb&lt;/code&gt;). Both raced for the &lt;strong&gt;same&lt;/strong&gt;
global worker leases (&lt;code&gt;gc-leader-N&lt;/code&gt;, &lt;code&gt;rebalance-leader-N&lt;/code&gt;,
&lt;code&gt;lifecycle-leader-&amp;lt;bucketID&amp;gt;&lt;/code&gt;, etc.) on Cassandra. Whichever container
started first won — and when the single-cluster winner popped a GC
entry for &lt;code&gt;cephb&lt;/code&gt;, deletion failed forever (no cephb connection), the
queue piled up, &lt;code&gt;deregister_ready&lt;/code&gt; stuck &lt;code&gt;false&lt;/code&gt;, and drain wedged.&lt;/p&gt;</description></item><item><title>Drain progress physical chunks</title><link>https://danchupin.github.io/strata/architecture/migrations/drain-progress-physical/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://danchupin.github.io/strata/architecture/migrations/drain-progress-physical/</guid><description>&lt;h1 id="migrating-to-the-physical-chunk-drain-progress"&gt;Migrating to the physical-chunk drain progress&lt;a class="anchor" href="#migrating-to-the-physical-chunk-drain-progress"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;GET /admin/v1/clusters/&amp;lt;id&amp;gt;/drain-progress&lt;/code&gt; and the operator console
&lt;code&gt;&amp;lt;DrainProgressBar&amp;gt;&lt;/code&gt; used to surface &lt;code&gt;chunks_on_cluster&lt;/code&gt; — the
manifest-derived chunk count — as the sole headline metric. After the
&lt;code&gt;ralph/drain-progress-physical&lt;/code&gt; cycle (US-001..US-003) the response
gains three additive fields and the UI renders a 3-state machine that
distinguishes manifest progress from physical pool state.&lt;/p&gt;
&lt;p&gt;This page documents the wire shape change, the back-compat fallback for
backends without the new probe, and the operator-visible state machine.
There is no schema migration; no data migration; the change is purely
additive on the &lt;code&gt;/drain-progress&lt;/code&gt; JSON shape.&lt;/p&gt;</description></item><item><title>TiKV-default lab</title><link>https://danchupin.github.io/strata/architecture/migrations/tikv-default-lab/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://danchupin.github.io/strata/architecture/migrations/tikv-default-lab/</guid><description>&lt;h1 id="migrating-to-the-tikv-default-2-replica-lab"&gt;Migrating to the TiKV-default 2-replica lab&lt;a class="anchor" href="#migrating-to-the-tikv-default-2-replica-lab"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;docker compose up -d&lt;/code&gt; used to bring up a single Cassandra-backed
&lt;code&gt;strata&lt;/code&gt; service on &lt;code&gt;:9999&lt;/code&gt; plus a &lt;code&gt;ceph&lt;/code&gt; + &lt;code&gt;ceph-b&lt;/code&gt; multi-cluster
RADOS pair. TiKV was opt-in via &lt;code&gt;--profile tikv&lt;/code&gt; (&lt;code&gt;strata-tikv&lt;/code&gt;) or
&lt;code&gt;--profile lab-tikv&lt;/code&gt; / &lt;code&gt;--profile lab-tikv-3&lt;/code&gt; for 2- and 3-replica
labs, and a parallel 3-replica Cassandra lab lived under
&lt;code&gt;--profile lab-cassandra-3&lt;/code&gt;. Four distinct profile shapes plus the
always-on bare default — each rarely-used, each one a maintenance
surface to keep green across CI + smoke + bench scripts.&lt;/p&gt;</description></item></channel></rss>