Skip to content

Bump Weasel 9.0.3 (resolves #3037) + Phase-2 multi-node partitioned distribution tests (#3021)#3038

Merged
jeremydmiller merged 1 commit into
mainfrom
chore-weasel-9.0.3-unblock-3037
Jun 5, 2026
Merged

Bump Weasel 9.0.3 (resolves #3037) + Phase-2 multi-node partitioned distribution tests (#3021)#3038
jeremydmiller merged 1 commit into
mainfrom
chore-weasel-9.0.3-unblock-3037

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Closes #3037. Advances #3021 Phase 2 (multi-node).

Weasel 9.0.3

weasel#300 fixes the bug behind #3037: ListPartitioning classified an existing partition as the PostgreSQL DEFAULT partition by table name (<table>_default). Marten's managed *DEFAULT* tenant uses table suffix default, so its partition table mt_streams_default is a regular value partition (FOR VALUES IN ('*DEFAULT*')) that was mistaken for the PG default, dropped from the actual set, and perpetually re-CREATEd → a 2nd node's resource-setup threw 42P07 relation "mt_streams_default" already exists. Weasel 9.0.3 classifies by the partition's bound expression instead.

Bumps all Weasel.* 9.0.2 → 9.0.3. Resolves to 9.0.3 over Marten's transitive reference via central package management (verified in project.assets.json); the fix is internal with no API change.

Now-unblocked multi-node tests

tenant_partitioned_distribution_multinode — two MultiTenanted async snapshot projections on a single Conjoined + Quick + UseTenantPartitionedEvents schema, three managed tenants:

  • agents_spread_one_per_node_across_the_cluster_and_stay_per_shard — across two nodes the subscription agents distribute one-per-node (two total, per shard × database), not per tenant (which would be six).
  • agents_fail_over_to_the_surviving_node_when_a_node_leaves — when a node stops, its agent reassigns to the survivor and the count stays per-shard (two on the original).

Both verified stable across repeated runs; previously they could not even start (the 42P07 above).

Verification

  • Multi-node tests: 3× consecutive green each.
  • Full MartenTests suite: 493/493.

Follow-up

Per-tenant projection high-water continuity across a rebalance is deferred — appending after a dynamic rebalance didn't reflect in the projection within the poll window in my draft; investigating whether that's a real continuity gap or a test-harness/timing issue before adding it. Tracked under #3021 Phase 2.

🤖 Generated with Claude Code

…ned distribution tests (#3021)

Weasel 9.0.3 (weasel#300) fixes the name-based default-partition classification that made a 2nd node's
resource-setup re-emit CREATE TABLE mt_streams_default and throw 42P07 under UseTenantPartitionedEvents
+ a MultiTenanted projection (GH-3037). Bumps all Weasel.* 9.0.2 -> 9.0.3 (resolves over Marten's
transitive reference via central package management; the fix is internal, no API change).

With the fix in place the previously-blocked multi-node distribution scenario works. Adds
tenant_partitioned_distribution_multinode (two MultiTenanted async snapshot projections on a single
Conjoined + Quick + UseTenantPartitionedEvents schema, three managed tenants):

- agents_spread_one_per_node_across_the_cluster_and_stay_per_shard: across two nodes the subscription
  agents distribute one-per-node (two total, per shard x database) — NOT per tenant (which would be six)
- agents_fail_over_to_the_surviving_node_when_a_node_leaves: when a node stops, its agent reassigns to
  the survivor and the count stays per-shard (two on the original)

Both stable across repeated runs. (Per-tenant high-water continuity across a rebalance is deferred —
under investigation separately.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jeremydmiller jeremydmiller merged commit 7a7cf32 into main Jun 5, 2026
24 checks passed
This was referenced Jun 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant