mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-06 22:23:56 -05:00
<!-- Thanks for sending a PR! Before submitting: 1. If this is your first PR, check out our contribution guide here https://docs.prylabs.network/docs/contribute/contribution-guidelines You will then need to sign our Contributor License Agreement (CLA), which will show up as a comment from a bot in this pull request after you open it. We cannot review code without a signed CLA. 2. Please file an associated tracking issue if this pull request is non-trivial and requires context for our team to understand. All features and most bug fixes should have an associated issue with a design discussed and decided upon. Small bug fixes and documentation improvements don't need issues. 3. New features and bug fixes must have tests. Documentation may need to be updated. If you're unsure what to update, send the PR, and we'll discuss in review. 4. Note that PRs updating dependencies and new Go versions are not accepted. Please file an issue instead. 5. A changelog entry is required for user facing issues. --> **What type of PR is this?** Bug fix **What does this PR do? Why is it needed?** Prysm starting throwing this error `Could not write response message" error="write tcp 10.104.92.212:5052->10.104.92.196:41876: write: broken pipe` because a validator got attestation data from a synced node and submitted attestation to a syncing node, when the node couldn't replay the state the validator context deadlined and disconnected but the writer when it finally responded tries to write it gets this broken pipe error. applies to `/eth/v2/beacon/pool/attestations` and `/eth/v1/beacon/pool/sync_committees` the solution is 2 part. 1. we shouldn't allow submission of an attestation if the node is syncing because we can't save the attestation without the state information. 2. we were doing the expensive state call before broadcast before in rest and now it should match gRPC where it happens afterward in its own go routine. Tested manually running kurtosis with rest validators ``` participants: # Super-nodes - el_type: nethermind cl_type: prysm cl_image: gcr.io/offchainlabs/prysm/beacon-chain:latest count: 2 supernode: true cl_extra_params: - --subscribe-all-subnets - --verbosity=debug vc_extra_params: - --enable-beacon-rest-api - --verbosity=debug # Full-nodes - el_type: nethermind cl_type: prysm cl_image: gcr.io/offchainlabs/prysm/beacon-chain:latest validator_count: 63 cl_extra_params: - --verbosity=debug vc_extra_params: - --enable-beacon-rest-api - --verbosity=debug - el_type: nethermind cl_type: prysm cl_image: gcr.io/offchainlabs/prysm/beacon-chain:latest cl_extra_params: - --verbosity=debug vc_extra_params: - --enable-beacon-rest-api - --verbosity=debug validator_count: 13 additional_services: - dora - spamoor spamoor_params: image: ethpandaops/spamoor:master max_mem: 4000 spammers: - scenario: eoatx config: throughput: 200 - scenario: blobs config: throughput: 20 network_params: fulu_fork_epoch: 2 bpo_1_epoch: 8 bpo_1_max_blobs: 21 withdrawal_type: "0x02" preset: mainnet seconds_per_slot: 6 global_log_level: debug ``` **Which issues(s) does this PR fix?** Fixes # **Other notes for review** **Acknowledgements** - [x] I have read [CONTRIBUTING.md](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md). - [x] I have included a uniquely named [changelog fragment file](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md#maintaining-changelogmd). - [x] I have added a description with sufficient context for reviewers to understand this PR. - [x] I have tested that my changes work as expected and I added a testing plan to the PR description (if applicable).
233 B
233 B
Changed
- the /eth/v2/beacon/pool/attestations and /eth/v1/beacon/pool/sync_committees now returns a 503 error if the node is still syncing, the rest api is also working in a similar process to gRPC broadcasting immediately now.