responsible neighborhood splitting
Maintainers usually reply within 2 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- go
- Domain
- distributed-systems
Research direction
Start by reading the linked SWIP and tracing Bee's reserve eviction and storage-radius logic, then locate the pullsync and pushsync workers and their topology-change handling. The issue does not name files or tests, so first map those entry points and existing protocol tests. Done means radius growth avoids empty neighborhoods and both protocols pause or reject work as specified until the split problem is resolved.
Written by the indexing model from the issue text.
Description
Background
Swip https://github.com/ethersphere/SWIPs/pull/43
When the reserve capacity is reached, the reserve will go through an eviction process staring with lower value batches first by removing chunks with proximity order less than the storage radius until the size falls below the capacity.
If the size is still over the capacity, the storage radius is increased, and the eviction process repeats again, this time with a higher proximity order criteria.
When the radius increases, the neighborhood actually splits into two. If there is an insufficient number of nodes OR the overlay addresses, after the radius increase, all end of falling into the same neighborhood, the other neighborhood will have no nodes in it and this can cause loss of data for previously stored and newly uploaded chunks.
In the diagram below, imagine the case all nodes in neighborhood 7 share one higher order of proximity, so they all end up in neighborhood 9 after the radius is increased, leaving 4 without a single node.
Task
- Before increasing the storage radius, the node will first check that the two neighborhoods after splitting the current one will have at least have one node. If not, then the radius increase will be skipped.
- In the case that there isn't sufficient number of peers, the pullsync worker will be paused and the pushsync will reject new chunks that it stores
- The pullsync and pushsyns protocols, if paused, will monitor topology changes and remain paused until the neighborhood split problem is resolved.
- Dominant language
- Go
- Stars
- 1.5k
- Forks
- 390
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 23
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ethersphere/bee
-
Chequebook deployment uses a fixed 175,000 gas limit; it needs about 630,000 under Glamsterdam (live on Sepolia since 2026-10-06)Possibly taken @sbackend123 claimed this 9 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
ethersphere/bee#5650 · 1 assignee ·
Maintainers usually reply within 2 days
-
Add a transaction inbox for outbound chain transactionsPossibly taken @sbackend123 claimed this 3 days ago. Openseen
Difficulty 5/5 Over a week Newbie friendliness 35/100
ethersphere/bee#5660 · 1 assignee ·
Maintainers usually reply within 2 days
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
ethersphere/bee#5659 ·
Maintainers usually reply within 2 days
-
accepted seen
Difficulty 4/5 3-5 days Newbie friendliness 40/100
ethersphere/bee#5648 · 1 comment ·
Maintainers usually reply within 2 days
-
pusher: chunksWorker deadlocks on a deferred chunk that fails IdentityAddress (send on nil op.Err), halting all push-syncPossibly taken @sbackend123 claimed this 11 days ago. Openseen
Difficulty 3/5 1-2 days Newbie friendliness 75/100
ethersphere/bee#5641 · 1 assignee ·
Maintainers usually reply within 2 days
Similar issues
-
goose sub-agent runs are never indexed: blame finds no session for any file a `delegate` child wroteOpenbug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
triage
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
wakatime/wakatime-cli#1649 ·
Maintainers usually reply within 1 day
-
PathBuffer.Pop corrupts later error locations when a key contains "." or "["Possibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
danielgtaylor/huma#1135 ·
Maintainers usually reply within 1 day
-
needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
stacklok/toolhive-catalog#1734 ·
Maintainers usually reply within 1 day
-
documentation priority:p1
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
yeixio/toskar-core#697 ·
Maintainers usually reply within 1 day