Skip to content

feat(bin/node): Runner Crate#233

Merged
refcell merged 2 commits intomainfrom
rf/move-into-crate
Dec 4, 2025
Merged

feat(bin/node): Runner Crate#233
refcell merged 2 commits intomainfrom
rf/move-into-crate

Conversation

@refcell
Copy link
Copy Markdown
Contributor

@refcell refcell commented Dec 4, 2025

Description

Migrates the node building + running into a new crate, simplifying the node binary and allowing for the node building to be extensible.

@refcell refcell requested a review from danyalprout December 4, 2025 17:45
@refcell refcell self-assigned this Dec 4, 2025
@refcell refcell added the F-do-not-merge Flag: don't merge until this label is removed. label Dec 4, 2025
Base automatically changed from rf/isolate-builder to main December 4, 2025 17:46
@cb-heimdall
Copy link
Copy Markdown
Collaborator

cb-heimdall commented Dec 4, 2025

✅ Heimdall Review Status

Requirement Status More Info
Reviews 1/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@refcell refcell removed the F-do-not-merge Flag: don't merge until this label is removed. label Dec 4, 2025
@refcell refcell marked this pull request as ready for review December 4, 2025 17:48
@refcell refcell force-pushed the rf/move-into-crate branch from 74e88af to e5b70c9 Compare December 4, 2025 17:48
@refcell refcell merged commit b953513 into main Dec 4, 2025
12 checks passed
@refcell refcell deleted the rf/move-into-crate branch December 4, 2025 18:17
danyalprout pushed a commit that referenced this pull request Feb 13, 2026
* Add a workspace

* go

* Fix tests concurrency

* Update websocket proxy location

* Fix

* Fix

* Update cargo run commands

* Use workspace dependencies

* Fix issues

* update deny

* More deny stuff
github-merge-queue bot pushed a commit that referenced this pull request Feb 14, 2026
* Restructure the repo as a workspace (#233)

* Add a workspace

* go

* Fix tests concurrency

* Update websocket proxy location

* Fix

* Fix

* Update cargo run commands

* Use workspace dependencies

* Fix issues

* update deny

* More deny stuff

* websocket proxy: Add authenticated endpoint settings (#261)

* Add authenticated endpoint to websocket proxy

* Mark code as dead

* websocket proxy: disconnect downstream client if lagging (#269)

* disconnect client on lag

* add back lagged_connections metric

* Flashblocks with extension trait (#270)

* Add fb crate + block ext api

* Trying to plug builderExt

* Finish with the trait

* Fix lint

* Commit changes

* Address url feedback

* Add missing env vars

* Address feedback

* Add feedback

* Update

* brotli compress each message from upstream before sending downstream

* hide compression behind a feature flag

* remove feature flag, enable_compression arg, fix integration test

* fix clippy errors

* Fix FB race (#307)

* Fix race condition in FB (check that we return flashblocks for correct endpoint)
use std::mem::replace to avoid double locking

* run make fmt

* Add payload cleaning on FCU

* Add test

* chore: overall websocket limits should be per instance (#311)

* Initial batch of metrics for flashblocks service (#300)

* chore: minor tweaks to websocket-proxy (#353)

* chore: remove integration feature for websocket-proxy

* chore: received message metric per upstream source

* fix: ensure we reconnect when we receive a close

* Reformat

* Add a metric to track # of bytes broadcasted

* fix: ensure we ping/pong upstream and disconnect when they become unresponsive

* Add some additional logging

* feat: add ws filtering by addresses and topics with configurable match logic

* feat: add client ping/pong health checks

* Cherry pick ping/pong clients

* Fix initial backoff interval

* Separate rate limiting metrics by limit type

Split the single `rate_limited_requests` metric into two separate counters:
- `per_ip_rate_limited_requests`: Tracks rejections due to per-IP connection limits
- `global_rate_limited_requests`: Tracks rejections due to global instance limits

This provides better observability into which rate limiting mechanism is being
triggered, enabling more targeted monitoring and alerting.

Changes:
- Add RateLimitType enum to distinguish between limit types
- Update RateLimitError to include limit_type field
- Modify server.rs to increment appropriate metric based on limit type
- Update both InMemoryRateLimit and RedisRateLimit implementations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Log IP address when per-IP rate limit is exceeded

Add structured logging to capture the client IP address whenever a per-IP
rate limit is hit. This provides better observability for identifying which
specific IPs are hitting rate limits for security monitoring and debugging.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* add ping metrics

* Refactor websocket proxy to use Vec<u8> instead of String

* Revert "Refactor websocket proxy to use Vec<u8> instead of String"

This reverts commit 190e68145a818c594cfeca373ca977fc689ff5ef.

* add metrics

* fix

* update comment

* update

* send timeout

* configurable timeout

* update

* fix tests

* fixes for merging websocket proxy

* minimal ci fixes

---------

Co-authored-by: Ferran Borreguero <ferran.borreguero@gmail.com>
Co-authored-by: Haardik <hhaardik@uwaterloo.ca>
Co-authored-by: Haardik H <haardik.haardik@coinbase.com>
Co-authored-by: Solar Mithril <mikawamp@gmail.com>
Co-authored-by: shana <avalonche@protonmail.com>
Co-authored-by: Tobi Akerele <tobi.akerele@coinbase.com>
Co-authored-by: Cody Wang <cody.wang@coinbase.com>
Co-authored-by: Claude <noreply@anthropic.com>
refcell pushed a commit that referenced this pull request Feb 18, 2026
~~blocked by #205~~

ported from reth
mw2000 pushed a commit that referenced this pull request Mar 9, 2026
mw2000 pushed a commit that referenced this pull request Mar 16, 2026
haardikk21 pushed a commit that referenced this pull request Mar 17, 2026
* fix(lychee): lints

* feat(bin/node): move node building + running into a new runner crate
haardikk21 added a commit that referenced this pull request Mar 17, 2026
* Restructure the repo as a workspace (#233)

* Add a workspace

* go

* Fix tests concurrency

* Update websocket proxy location

* Fix

* Fix

* Update cargo run commands

* Use workspace dependencies

* Fix issues

* update deny

* More deny stuff

* websocket proxy: Add authenticated endpoint settings (#261)

* Add authenticated endpoint to websocket proxy

* Mark code as dead

* websocket proxy: disconnect downstream client if lagging (#269)

* disconnect client on lag

* add back lagged_connections metric

* Flashblocks with extension trait (#270)

* Add fb crate + block ext api

* Trying to plug builderExt

* Finish with the trait

* Fix lint

* Commit changes

* Address url feedback

* Add missing env vars

* Address feedback

* Add feedback

* Update

* brotli compress each message from upstream before sending downstream

* hide compression behind a feature flag

* remove feature flag, enable_compression arg, fix integration test

* fix clippy errors

* Fix FB race (#307)

* Fix race condition in FB (check that we return flashblocks for correct endpoint)
use std::mem::replace to avoid double locking

* run make fmt

* Add payload cleaning on FCU

* Add test

* chore: overall websocket limits should be per instance (#311)

* Initial batch of metrics for flashblocks service (#300)

* chore: minor tweaks to websocket-proxy (#353)

* chore: remove integration feature for websocket-proxy

* chore: received message metric per upstream source

* fix: ensure we reconnect when we receive a close

* Reformat

* Add a metric to track # of bytes broadcasted

* fix: ensure we ping/pong upstream and disconnect when they become unresponsive

* Add some additional logging

* feat: add ws filtering by addresses and topics with configurable match logic

* feat: add client ping/pong health checks

* Cherry pick ping/pong clients

* Fix initial backoff interval

* Separate rate limiting metrics by limit type

Split the single `rate_limited_requests` metric into two separate counters:
- `per_ip_rate_limited_requests`: Tracks rejections due to per-IP connection limits
- `global_rate_limited_requests`: Tracks rejections due to global instance limits

This provides better observability into which rate limiting mechanism is being
triggered, enabling more targeted monitoring and alerting.

Changes:
- Add RateLimitType enum to distinguish between limit types
- Update RateLimitError to include limit_type field
- Modify server.rs to increment appropriate metric based on limit type
- Update both InMemoryRateLimit and RedisRateLimit implementations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Log IP address when per-IP rate limit is exceeded

Add structured logging to capture the client IP address whenever a per-IP
rate limit is hit. This provides better observability for identifying which
specific IPs are hitting rate limits for security monitoring and debugging.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* add ping metrics

* Refactor websocket proxy to use Vec<u8> instead of String

* Revert "Refactor websocket proxy to use Vec<u8> instead of String"

This reverts commit 190e68145a818c594cfeca373ca977fc689ff5ef.

* add metrics

* fix

* update comment

* update

* send timeout

* configurable timeout

* update

* fix tests

* fixes for merging websocket proxy

* minimal ci fixes

---------

Co-authored-by: Ferran Borreguero <ferran.borreguero@gmail.com>
Co-authored-by: Haardik <hhaardik@uwaterloo.ca>
Co-authored-by: Haardik H <haardik.haardik@coinbase.com>
Co-authored-by: Solar Mithril <mikawamp@gmail.com>
Co-authored-by: shana <avalonche@protonmail.com>
Co-authored-by: Tobi Akerele <tobi.akerele@coinbase.com>
Co-authored-by: Cody Wang <cody.wang@coinbase.com>
Co-authored-by: Claude <noreply@anthropic.com>
mw2000 pushed a commit that referenced this pull request Mar 19, 2026
mw2000 pushed a commit that referenced this pull request Mar 23, 2026
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.

3 participants