From a07b2838ab9f136d2c6f1d42f67356420faf53cb Mon Sep 17 00:00:00 2001 From: thedevbirb <lorenzo.feroleto.dev@gmail.com> Date: Tue, 12 Nov 2024 16:53:31 +0100 Subject: [PATCH 1/2] fix(cli): builder.verify_constraints flag incorrectly propagated Co-authored-by: benhenryhunter <benhenryhunter@gmail.com> --- builder/service.go | 17 +++++++++-------- cmd/geth/main.go | 1 + 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/builder/service.go b/builder/service.go index 09be2c6..13b41a7 100644 --- a/builder/service.go +++ b/builder/service.go @@ -290,20 +290,21 @@ func Register(stack *node.Node, backend *eth.Ethereum, cfg *Config) error { } builderArgs := BuilderArgs{ - sk: builderSk, + beaconClient: beaconClient, blockConsumer: blockConsumer, - ds: ds, + builderBlockResubmitInterval: builderRateLimitInterval, + builderSigningDomain: builderSigningDomain, + discardRevertibleTxOnErr: cfg.DiscardRevertibleTxOnErr, dryRun: cfg.DryRun, + ds: ds, eth: ethereumService, + ignoreLatePayloadAttributes: cfg.IgnoreLatePayloadAttributes, + limiter: limiter, relay: relay, - builderSigningDomain: builderSigningDomain, - builderBlockResubmitInterval: builderRateLimitInterval, + sk: builderSk, submissionOffsetFromEndOfSlot: submissionOffset, - discardRevertibleTxOnErr: cfg.DiscardRevertibleTxOnErr, - ignoreLatePayloadAttributes: cfg.IgnoreLatePayloadAttributes, validator: validator, - beaconClient: beaconClient, - limiter: limiter, + verifyConstraints: cfg.VerifyConstraints, } builderBackend, err := NewBuilder(builderArgs) diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 0520205..f5a00b9 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -183,6 +183,7 @@ var ( utils.BuilderDiscardRevertibleTxOnErr, utils.BuilderEnableCancellations, utils.BuilderBlockProcessorURL, + utils.BuilderVerifyConstraints, } rpcFlags = []cli.Flag{ From 282a48138bc64a04fe05c8d25bfcc23a8b60b1e3 Mon Sep 17 00:00:00 2001 From: thedevbirb <lorenzo.feroleto.dev@gmail.com> Date: Tue, 12 Nov 2024 17:02:00 +0100 Subject: [PATCH 2/2] fix(constraints-sse): on any error reading response body, try to reconnect to avoid infinite loop --- builder/builder.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/builder/builder.go b/builder/builder.go index a35ee1b..8da7a8a 100644 --- a/builder/builder.go +++ b/builder/builder.go @@ -341,17 +341,17 @@ func (b *Builder) subscribeToRelayForConstraints(relayBaseEndpoint string) error for { line, err := bufReader.ReadString('\n') if err != nil { - // If we encounter an EOF or another serious error, break out to reconnect - isEOF := err == io.EOF || strings.Contains(err.Error(), "EOF") - if isEOF { - log.Error("Encountered EOF. Connection to relay lost, attempting to reconnect...", "relayBaseEndpoint", relayBaseEndpoint) - time.Sleep(retryInterval) - break // Break to reconnect by restarting the main `for` loop - } - - // Log other errors but continue reading if recoverable - log.Error(fmt.Sprintf("Error reading from response body: %v", err)) - continue + // It is better to break and trying to reconnect (by restarting + // the main loop), otherwise there is an high change we might run into + // an infinite loop because the error isn't recoverable. + log.Error( + fmt.Sprintf("Error reading from response body from relay %s: %v. Connection might be lost. Attempting to reconnect in %d seconds...", + relayBaseEndpoint, + err, + retryInterval, + )) + time.Sleep(retryInterval) + break } if !strings.HasPrefix(line, "data: ") {