Do not cache resolved hostnames in REST client. (#6570)

This commit is contained in:
Eugene Kabanov 2024-09-24 07:23:38 +03:00 committed by GitHub
parent 77e835153c
commit 841904bd53
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 41 additions and 17 deletions

View File

@ -151,8 +151,11 @@ proc getPayloadBuilderClient*(
if payloadBuilderAddress.isNone: if payloadBuilderAddress.isNone:
return err "Payload builder disabled" return err "Payload builder disabled"
let res = RestClientRef.new(payloadBuilderAddress.get)
if res.isOk and res.get.isNil: let
err "Got nil payload builder REST client reference" flags = {RestClientFlag.CommaSeparatedArray,
else: RestClientFlag.ResolveAlways}
res socketFlags = {SocketFlags.TcpNoDelay}
RestClientRef.new(payloadBuilderAddress.get, flags = flags,
socketFlags = socketFlags)

View File

@ -149,8 +149,16 @@ func getIdent*(storage: ValidatorStorage): ValidatorIdent =
proc restValidatorExit(config: BeaconNodeConf) {.async.} = proc restValidatorExit(config: BeaconNodeConf) {.async.} =
let let
client = RestClientRef.new(config.restUrlForExit).valueOr: client =
raise (ref RestError)(msg: $error) block:
let
flags = {RestClientFlag.CommaSeparatedArray,
RestClientFlag.ResolveAlways}
socketFlags = {SocketFlags.TcpNoDelay}
RestClientRef.new(config.restUrlForExit, flags = flags,
socketFlags = socketFlags).valueOr:
raise (ref RestError)(msg: $error)
stateIdHead = StateIdent(kind: StateQueryKind.Named, stateIdHead = StateIdent(kind: StateQueryKind.Named,
value: StateIdentType.Head) value: StateIdentType.Head)

View File

@ -61,6 +61,13 @@ func shortLog*(v: TrustedNodeSyncTarget): auto =
chronicles.formatIt(TrustedNodeSyncTarget): shortLog(it) chronicles.formatIt(TrustedNodeSyncTarget): shortLog(it)
proc createNewRestClient(url: string): Result[RestClientRef, cstring] =
let
flags = {RestClientFlag.CommaSeparatedArray,
RestClientFlag.ResolveAlways}
socketFlags = {SocketFlags.TcpNoDelay}
RestClientRef.new(url, flags = flags, socketFlags = socketFlags)
proc doTrustedNodeSync*( proc doTrustedNodeSync*(
db: BeaconChainDB, db: BeaconChainDB,
cfg: RuntimeConfig, cfg: RuntimeConfig,
@ -80,8 +87,8 @@ proc doTrustedNodeSync*(
databaseDir, backfill, reindex databaseDir, backfill, reindex
var var
client = RestClientRef.new(restUrl).valueOr: client = createNewRestClient(restUrl).valueOr:
error "Cannot connect to server", error = error error "Cannot connect to server", reason = error
quit 1 quit 1
# If possible, we'll store the genesis state in the database - this is not # If possible, we'll store the genesis state in the database - this is not
@ -440,8 +447,8 @@ proc doTrustedNodeSync*(
lastError = exc lastError = exc
warn "Retrying download of block", slot, err = exc.msg warn "Retrying download of block", slot, err = exc.msg
client = RestClientRef.new(restUrl).valueOr: client = createNewRestClient(restUrl).valueOr:
error "Cannot connect to server", url = restUrl, error = error error "Cannot connect to server", url = restUrl, reason = error
quit 1 quit 1
raise lastError raise lastError

View File

@ -1718,11 +1718,16 @@ proc registerValidatorsPerBuilder(
BUILDER_VALIDATOR_REGISTRATION_DELAY_TOLERANCE = 6.seconds BUILDER_VALIDATOR_REGISTRATION_DELAY_TOLERANCE = 6.seconds
let payloadBuilderClient = let payloadBuilderClient =
RestClientRef.new(payloadBuilderAddress).valueOr: block:
debug "Unable to initialize payload builder client while registering validators", let
payloadBuilderAddress, epoch, flags = {RestClientFlag.CommaSeparatedArray,
err = error RestClientFlag.ResolveAlways}
return socketFlags = {SocketFlags.TcpNoDelay}
RestClientRef.new(payloadBuilderAddress, flags = flags,
socketFlags = socketFlags).valueOr:
debug "Unable to initialize payload builder client while registering validators",
payloadBuilderAddress, epoch, reason = error
return
if payloadBuilderClient.isNil: if payloadBuilderClient.isNil:
debug "registerValidatorsPerBuilder: got nil payload builder REST client reference", debug "registerValidatorsPerBuilder: got nil payload builder REST client reference",

View File

@ -183,7 +183,8 @@ proc addRemoteValidator(pool: var ValidatorPool,
{HttpClientFlag.NoVerifyHost, HttpClientFlag.NoVerifyServerName} {HttpClientFlag.NoVerifyHost, HttpClientFlag.NoVerifyServerName}
else: else:
{} {}
prestoFlags = {RestClientFlag.CommaSeparatedArray} prestoFlags = {RestClientFlag.CommaSeparatedArray,
RestClientFlag.ResolveAlways}
socketFlags = {SocketFlags.TcpNoDelay} socketFlags = {SocketFlags.TcpNoDelay}
clients = clients =
block: block: