Skip to content

feat(pushsync): placement check that verifies where chunks land - #625

Draft
gacevicljubisa wants to merge 4 commits into
masterfrom
test/pushsync-placement
Draft

gacevicljubisa wants to merge 4 commits into
masterfrom
test/pushsync-placement

Conversation

@gacevicljubisa

Copy link
Copy Markdown
Member

No description provided.

@martinconic martinconic left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two blockers on the config side, both inline below. The check logic itself looks sound against the semantics of ethersphere/bee#5390; I'll follow up separately on smaller logic points (radius validation against CommittedDepth, deferred-mode polling, outcome counting).

Comment thread config/local.yaml
# of them empty, so that out-of-depth storing and shallow receipts can occur
bee-local-dns:
_inherit: "bee-local"
minimum-storage-radius: 3

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocker: this changes the cluster that all of Bee's CI runs on.

Bee's .github/workflows/beekeeper.yml deploys local-dns from beekeeper master's config/local.yaml and runs ci-pushsync-chunks, ci-retrieval, ci-manifest, ci-redundancy, ci-feed, ci-soc, ci-pss, etc. against it. bee-local-autotls, bootnode-local-dns-autotls and bee-local-ultralight-autotls also _inherit: "bee-local-dns", so local-dns-autotls (beekeeper-autotls.yml) gets this too.

At radius 3 there are 8 neighborhoods; 5 random full nodes leave at least 3 of them empty (~4 on average), so roughly half of all random chunks go to an empty neighborhood:

  • Bee v2.8.2: the closest node stores them outside its AOR ("want self"), and the shallow receipt is swallowed after retries. CI still passes, just slower.
  • After bee#5390: the forwarder returns ErrOutOfDepthStoring and the origin doesn't store it either. Direct uploads fail with ErrCouldNotSync, and deferred chunks are reported CouldNotSync and never sync. About half the chunks in every other CI check would fail.

Suggestion: leave bee-local-dns (and the bee count) untouched, and add a dedicated cluster (e.g. local-dns-placement) with its own bee-config (bee-local-placement with minimum-storage-radius: 3) for the placement checks.

(Side note: the radius on bootnode-local-dns below has no effect, because Bee doesn't store pushed chunks on a node in bootnode mode: FullNodeMode && !BootnodeMode in node.go.)

Comment thread config/local.yaml
bee-config: bee-local-dns
config: local-dns
count: 3
count: 5

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same concern as the minimum-storage-radius comment below: this bumps the node count of the local-dns cluster Bee's CI uses (more resources and time on every Bee PR, and it changes what ci-full-connectivity/ci-settlements etc. run against). Please keep it at 3 here and set the count on the dedicated placement cluster instead.

Comment thread config/local.yaml
- bootnode
timeout: 5m
type: pushsync
ci-pushsync-placement:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocker: on current Bee (v2.8.2), this check fails by design.

On v2.8.2, an upload to an empty neighborhood is stored outside any AOR ("want self" or a swallowed shallow receipt) and still reports success, so the check classifies it as false_success and fails. It can only pass against ethersphere/bee#5390, where those uploads fail (ErrCouldNotSync / CouldNotSync) and land in reported_failure. The metrics in placementBeeMetrics (bee_pushsync_out_of_depth_storing, bee_pusher_total_could_not_sync) also only exist in #5390 and silently read 0 otherwise.

The PR description is empty, so this dependency isn't documented anywhere. Please:

  • state the dependency on bee#5390 in the PR description, and
  • don't wire ci-pushsync-placement / ci-pushsync-placement-deferred into Bee's CI until #5390 is released.

@gacevicljubisa
gacevicljubisa marked this pull request as draft October 15, 2026 13:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants