From 5060f863a735f4ecb966cb68dcf5e65986034458 Mon Sep 17 00:00:00 2001 From: Chris Hager Date: Fri, 4 Jul 2025 14:45:56 +0200 Subject: [PATCH] new receiver flag: builder-ready-endpoint --- cmd/receiver-proxy/main.go | 8 ++++++++ proxy/receiver_api.go | 11 ++++++++--- proxy/receiver_proxy.go | 4 ++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/cmd/receiver-proxy/main.go b/cmd/receiver-proxy/main.go index d4b0644..bfbe510 100644 --- a/cmd/receiver-proxy/main.go +++ b/cmd/receiver-proxy/main.go @@ -46,6 +46,12 @@ var flags = []cli.Flag{ Usage: "address to send local ordeflow to", EnvVars: []string{"BUILDER_ENDPOINT"}, }, + &cli.StringFlag{ + Name: "builder-ready-endpoint", + Value: "http://127.0.0.1:6070", + Usage: "address to send /readyz to", + EnvVars: []string{"BUILDER_READY_ENDPOINT"}, + }, &cli.StringFlag{ Name: "rpc-endpoint", Value: "http://127.0.0.1:8545", @@ -201,6 +207,7 @@ func runMain(cCtx *cli.Context) error { builderEndpoint := cCtx.String("builder-endpoint") rpcEndpoint := cCtx.String("rpc-endpoint") + builderReadyEndpoint := cCtx.String("builder-ready-endpoint") builderConfigHubEndpoint := cCtx.String("builder-confighub-endpoint") archiveEndpoint := cCtx.String("orderflow-archive-endpoint") @@ -220,6 +227,7 @@ func runMain(cCtx *cli.Context) error { BuilderConfigHubEndpoint: builderConfigHubEndpoint, ArchiveEndpoint: archiveEndpoint, ArchiveConnections: connectionsPerPeer, + BuilderReadyEndpoint: builderReadyEndpoint, EthRPC: rpcEndpoint, MaxRequestBodySizeBytes: maxRequestBodySizeBytes, ConnectionsPerPeer: connectionsPerPeer, diff --git a/proxy/receiver_api.go b/proxy/receiver_api.go index 6b6a198..dfe8397 100644 --- a/proxy/receiver_api.go +++ b/proxy/receiver_api.go @@ -80,14 +80,19 @@ func (prx *ReceiverProxy) UserJSONRPCHandler(maxRequestBodySizeBytes int64) (*rp // readyHandler calls /readyz on rbuilder func (prx *ReceiverProxy) readyHandler(w http.ResponseWriter, r *http.Request) error { - resp, err := http.Get(prx.LocalBuilderEndpoint + "/readyz") + if prx.builderReadyEndpoint == "" { + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte("ready")) + return nil + } + + resp, err := http.Get(prx.builderReadyEndpoint + "/readyz") if err != nil { prx.Log.Warn("Failed to check builder readiness", slog.Any("error", err)) http.Error(w, "not ready", http.StatusServiceUnavailable) return nil } defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { http.Error(w, "not ready", http.StatusServiceUnavailable) return nil @@ -95,7 +100,7 @@ func (prx *ReceiverProxy) readyHandler(w http.ResponseWriter, r *http.Request) e // If the builder is ready, return 200 OK w.WriteHeader(http.StatusOK) - _, _ = w.Write([]byte("ready")) + _, _ = w.Write([]byte("OK")) return nil } diff --git a/proxy/receiver_proxy.go b/proxy/receiver_proxy.go index 54d3ddc..89c3813 100644 --- a/proxy/receiver_proxy.go +++ b/proxy/receiver_proxy.go @@ -60,6 +60,8 @@ type ReceiverProxy struct { userAPIRateLimiter *rate.Limiter localBuilderSender LocalBuilderSender + + builderReadyEndpoint string } type ReceiverProxyConstantConfig struct { @@ -76,6 +78,7 @@ type ReceiverProxyConfig struct { BuilderConfigHubEndpoint string ArchiveEndpoint string ArchiveConnections int + BuilderReadyEndpoint string // EthRPC should support eth_blockNumber API EthRPC string @@ -110,6 +113,7 @@ func NewReceiverProxy(config ReceiverProxyConfig) (*ReceiverProxy, error) { replacementNonceRLU: expirable.NewLRU[replacementNonceKey, int](replacementNonceSize, nil, replacementNonceTTL), userAPIRateLimiter: userAPIRateLimiter, localBuilderSender: localBuilderSender, + builderReadyEndpoint: config.BuilderReadyEndpoint, } maxRequestBodySizeBytes := DefaultMaxRequestBodySizeBytes if config.MaxRequestBodySizeBytes != 0 {