Skip to content

Commit

Permalink
v0.22 fixes (#410)
Browse files Browse the repository at this point in the history
* save validation error

* builder demotion: fix nil pointer when error is reqErr (#409)

---------

Co-authored-by: Niclas Blomberg <[email protected]>
  • Loading branch information
metachris and blombern authored May 17, 2023
1 parent d2df40a commit 837774d
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions services/api/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -603,8 +603,15 @@ func (api *RelayAPI) processOptimisticBlock(opts blockSimOptions) {
opts.builder.status.IsOptimistic = false
api.log.WithError(simErr).Warn("block simulation failed in processOptimisticBlock, demoting builder")

var demotionErr error
if reqErr != nil {
demotionErr = reqErr
} else {
demotionErr = simErr
}

// Demote the builder.
api.demoteBuilder(builderPubkey, &opts.req.BuilderSubmitBlockRequest, simErr)
api.demoteBuilder(builderPubkey, &opts.req.BuilderSubmitBlockRequest, demotionErr)
}
}

Expand Down Expand Up @@ -1811,23 +1818,23 @@ func (api *RelayAPI) handleSubmitNewBlock(w http.ResponseWriter, req *http.Reque
go api.processOptimisticBlock(opts)
} else {
// Simulate block (synchronously)
reqErr, simErr := api.simulateBlock(req.Context(), opts) // success/error logging happens inside
requestErr, validationErr = api.simulateBlock(req.Context(), opts) // success/error logging happens inside
validationDurationMs := time.Since(timeBeforeValidation).Milliseconds()
log = log.WithFields(logrus.Fields{
"timestampAfterValidation": time.Now().UTC().UnixMilli(),
"validationDurationMs": validationDurationMs,
})
if reqErr != nil { // Request error
if os.IsTimeout(reqErr) {
if requestErr != nil { // Request error
if os.IsTimeout(requestErr) {
api.RespondError(w, http.StatusGatewayTimeout, "validation request timeout")
} else {
api.RespondError(w, http.StatusBadRequest, reqErr.Error())
api.RespondError(w, http.StatusBadRequest, requestErr.Error())
}
return
} else {
wasSimulated = true
if simErr != nil {
api.RespondError(w, http.StatusBadRequest, simErr.Error())
if validationErr != nil {
api.RespondError(w, http.StatusBadRequest, validationErr.Error())
return
}
}
Expand Down

0 comments on commit 837774d

Please sign in to comment.