Repository navigation
feat(pushsync): placement check that verifies where chunks land #625
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
66a3158
0b5d84a
2b5aa15
5e81464
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| # bee-light-testnet: 20 full nodes on an isolated testnet (swarm1), used for A/B runs. | ||
| # The bootnode has no ingress and is not part of the cluster definition. | ||
| clusters: | ||
| bee-light-testnet: | ||
| _inherit: "" | ||
| name: bee | ||
| namespace: bee-light-testnet | ||
| disable-namespace: true | ||
| api-domain: lightnet.testnet.internal | ||
| api-domain-internal: bee-light-testnet.svc.swarm1.local:1633 | ||
| api-insecure-tls: true | ||
| api-scheme: http | ||
| funding: | ||
| eth: 0.1 | ||
| gbzz: 2.0 | ||
| bzz: 5.0 | ||
| node-groups: | ||
| bee-1: | ||
| mode: node | ||
| bee-config: light-testnet | ||
| config: ng-light-testnet | ||
| count: 5 | ||
| bee-2: | ||
| mode: node | ||
| bee-config: light-testnet | ||
| config: ng-light-testnet | ||
| count: 5 | ||
| bee-3: | ||
| mode: node | ||
| bee-config: light-testnet | ||
| config: ng-light-testnet | ||
| count: 5 | ||
| bee-4: | ||
| mode: node | ||
| bee-config: light-testnet | ||
| config: ng-light-testnet | ||
| count: 5 | ||
|
|
||
| node-groups: | ||
| ng-light-testnet: | ||
| _inherit: "" | ||
|
|
||
| bee-configs: | ||
| light-testnet: | ||
| _inherit: "" | ||
| full-node: true | ||
|
|
||
| checks: | ||
| lt-pushsync-placement: | ||
| options: | ||
| chunks-per-node: 2 # per neighborhood, per uploader | ||
| mode: placement | ||
| postage-ttl: 24h | ||
| postage-depth: 22 | ||
| postage-label: test-label | ||
| retry-delay: 5s | ||
| storage-radius: 2 # the radius the nodes report in /status | ||
| upload-nodes: [bee-1-2, bee-2-0, bee-3-0, bee-3-1, bee-4-3, bee-4-4] | ||
| upload-timeout: 60s | ||
| timeout: 60m | ||
| type: pushsync | ||
| lt-pushsync-placement-deferred: | ||
| options: | ||
| chunks-per-node: 2 | ||
| deferred: true | ||
| mode: placement | ||
| postage-ttl: 24h | ||
| postage-depth: 22 | ||
| postage-label: test-label | ||
| retry-delay: 30s # the pusher queue is busy with the background load | ||
| storage-radius: 2 | ||
| upload-nodes: [bee-1-2, bee-2-0, bee-3-0, bee-3-1, bee-4-3, bee-4-4] | ||
| upload-timeout: 60s | ||
| timeout: 60m | ||
| type: pushsync |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -40,7 +40,7 @@ clusters: | |
| bee: | ||
| bee-config: bee-local-dns | ||
| config: local-dns | ||
| count: 3 | ||
| count: 5 | ||
| mode: node | ||
| light: | ||
| bee-config: bee-local-light | ||
|
|
@@ -207,10 +207,14 @@ bee-configs: | |
| bootnode-local: | ||
| _inherit: "bee-local" | ||
| bootnode-mode: true | ||
| # a forced storage radius splits the small cluster into neighborhoods, some | ||
| # of them empty, so that out-of-depth storing and shallow receipts can occur | ||
| bee-local-dns: | ||
| _inherit: "bee-local" | ||
| minimum-storage-radius: 3 | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 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:
Suggestion: leave (Side note: the radius on |
||
| bootnode-local-dns: | ||
| _inherit: "bee-local" | ||
| minimum-storage-radius: 3 | ||
| bootnode-mode: true | ||
| bee-local-light: | ||
| _inherit: "bee-local" | ||
|
|
@@ -304,6 +308,33 @@ checks: | |
| - bootnode | ||
| timeout: 5m | ||
| type: pushsync | ||
| ci-pushsync-placement: | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 The PR description is empty, so this dependency isn't documented anywhere. Please:
|
||
| options: | ||
| chunks-per-node: 2 # per neighborhood, per uploader | ||
| mode: placement | ||
| postage-ttl: 24h | ||
| postage-depth: 21 | ||
| postage-label: test-label | ||
| retry-delay: 3s | ||
| storage-radius: 3 # must match minimum-storage-radius of the full nodes | ||
| upload-node-count: 2 | ||
| upload-timeout: 30s | ||
| timeout: 30m | ||
| type: pushsync | ||
| ci-pushsync-placement-deferred: | ||
| options: | ||
| chunks-per-node: 2 # per neighborhood, per uploader | ||
| deferred: true | ||
| mode: placement | ||
| postage-ttl: 24h | ||
| postage-depth: 21 | ||
| postage-label: test-label | ||
| retry-delay: 3s | ||
| storage-radius: 3 # must match minimum-storage-radius of the full nodes | ||
| upload-node-count: 2 | ||
| upload-timeout: 30s | ||
| timeout: 30m | ||
| type: pushsync | ||
| ci-pushsync-light-chunks: | ||
| options: | ||
| chunks-per-node: 3 | ||
|
|
||
There was a problem hiding this comment.
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-radiuscomment below: this bumps the node count of thelocal-dnscluster Bee's CI uses (more resources and time on every Bee PR, and it changes whatci-full-connectivity/ci-settlementsetc. run against). Please keep it at 3 here and set the count on the dedicated placement cluster instead.