Skip to content

[WAGED Tag Isolation 5/16] Group instance tags into share blocks - #285

Draft
LZD-PratyushBhatt wants to merge 1 commit into
lzd/waged-iso-04-skeletonfrom
lzd/waged-iso-05-blocks
Draft

LZD-PratyushBhatt wants to merge 1 commit into
lzd/waged-iso-04-skeletonfrom
lzd/waged-iso-05-blocks

Conversation

@LZD-PratyushBhatt

@LZD-PratyushBhatt LZD-PratyushBhatt commented Sep 20, 2026

Copy link
Copy Markdown
Collaborator

Description

Add the two block partitions that decide how much of a cluster is carried over when one instance group cannot be placed.

Rolling back only the broken group would free capacity that other groups on the same nodes would immediately consume. Groups that can land on the same node are therefore joined, transitively, into a share block, and a block is the unit carried over together. The union-find walk is driven by each node's own tags rather than a scan of every group, which keeps the failure path cheap on clusters with thousands of untagged resources.

Attribution blocks are the same partition widened with a group for every tag any node carries, so a clique whose replicas are all already placed still has a block to be blamed in.

Stacked PR 5 of 16 of the WAGED instance tag isolation stack.

  • Base branch: lzd/waged-iso-04-skeleton
  • Only the top commit belongs to this PR
  • The full stack merges into waged-tag-based-isolation, which merges into dev at the end

Tests

No reachable behavior yet.

mvn test-compile -pl helix-core: BUILD SUCCESS

Changes that Break Backward Compatibility

None. The new cluster config flag defaults to false, and with it off every code path added here behaves exactly as it does today.

Documentation

The design doc lands in lzd/waged-iso-13-doc as docs/design/002-waged-instance-tag-isolation.md.

Code Quality

Formatted with helix-style.xml.

Add the two block partitions that decide how much of a cluster is
carried over when one instance group cannot be placed.

Rolling back only the broken group would free capacity that other groups
on the same nodes would immediately consume, so the emitted result could
overcommit those nodes. Groups that can land on the same node are
therefore joined, transitively, into a share block, and a block is the
unit that is carried over together.

Sharing a node is symmetric, so the relation partitions the groups. The
union-find walk is driven by each node's own tags rather than a scan of
every group, which keeps the failure path cheap on clusters with
thousands of untagged resources.

Attribution blocks are the same partition widened with a group for every
tag any node carries, so a clique whose replicas are all already placed
still has a block it can be blamed in. It is kept separate because the
share partition is sized by the replica derived groups, and padding it
would stop the "everything failed" guard ever firing.

In the clique topology this targets, every instance carries one tag, so
each block is a single clique. An untagged resource can go anywhere, so
it pulls everything it meets into one cluster wide block and the
rebalance then fails exactly as it does today.
@LZD-PratyushBhatt
LZD-PratyushBhatt added this pull request to stack #297 September 20, 2026 05:46
@LZD-PratyushBhatt LZD-PratyushBhatt changed the title Group instance tags into share blocks [WAGED Tag Isolation 5/16] Group instance tags into share blocks Sep 20, 2026
@LZD-PratyushBhatt LZD-PratyushBhatt added the waged-tag-level-isolation Opt-in WAGED failure isolation per instance group tag (clique) label Sep 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waged-tag-level-isolation Opt-in WAGED failure isolation per instance group tag (clique)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant