Skip to content

Commit

Permalink
refresh cl client metadata too
Browse files Browse the repository at this point in the history
  • Loading branch information
pk910 committed Feb 12, 2025
1 parent abfda61 commit 9955904
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 20 deletions.
2 changes: 1 addition & 1 deletion clients/consensus/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ type Client struct {
finalizedRoot phase0.Root
finalizedEpoch phase0.Epoch
lastFinalityUpdateEpoch phase0.Epoch
lastPeerUpdateEpoch phase0.Epoch
lastMetadataUpdate time.Time
lastSyncUpdateEpoch phase0.Epoch
peers []*v1.Peer
blockDispatcher Dispatcher[*v1.BlockEvent]
Expand Down
40 changes: 21 additions & 19 deletions clients/consensus/clientlogic.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,18 +62,9 @@ func (client *Client) checkClient() error {
return fmt.Errorf("initialization of attestantio/go-eth2-client failed: %w", err)
}

// get node version
nodeVersion, err := client.rpcClient.GetNodeVersion(ctx)
if err != nil {
return fmt.Errorf("error while fetching node version: %v", err)
}

client.versionStr = nodeVersion
client.parseClientVersion(nodeVersion)

// update node peers
if err = client.updateNodePeers(ctx); err != nil {
return fmt.Errorf("could not get node peers for %s: %v", client.endpointConfig.Name, err)
// update node metadata
if err = client.updateNodeMetadata(ctx); err != nil {
return fmt.Errorf("could not get node metadata for %s: %v", client.endpointConfig.Name, err)
}

// get & compare genesis
Expand Down Expand Up @@ -223,12 +214,12 @@ func (client *Client) runClientLogic() error {
}()
}

if currentEpoch-client.lastPeerUpdateEpoch >= 1 {
client.lastPeerUpdateEpoch = currentEpoch
if time.Since(client.lastMetadataUpdate) >= 5*time.Minute {
client.lastMetadataUpdate = time.Now()
go func() {
// update node peers
if err = client.updateNodePeers(client.clientCtx); err != nil {
client.logger.Errorf("could not get node peers for %s: %v", client.endpointConfig.Name, err)
if err = client.updateNodeMetadata(client.clientCtx); err != nil {
client.logger.Errorf("could not get node metadata for %s: %v", client.endpointConfig.Name, err)
} else {
client.logger.WithFields(logrus.Fields{"epoch": currentEpoch, "peers": len(client.peers)}).Debug("updated consensus node peers")
}
Expand Down Expand Up @@ -258,23 +249,34 @@ func (client *Client) updateSynchronizationStatus(ctx context.Context) error {
return nil
}

func (client *Client) updateNodePeers(ctx context.Context) error {
func (client *Client) updateNodeMetadata(ctx context.Context) error {
var cancel context.CancelFunc
ctx, cancel = context.WithTimeout(ctx, 30*time.Second)
defer cancel()

var err error
client.lastMetadataUpdate = time.Now()

// get node version
nodeVersion, err := client.rpcClient.GetNodeVersion(ctx)
if err != nil {
return fmt.Errorf("error while fetching node version: %v", err)
}

client.versionStr = nodeVersion
client.parseClientVersion(nodeVersion)

// get node identity
client.nodeIdentity, err = client.rpcClient.GetNodeIdentity(ctx)
if err != nil {
return fmt.Errorf("could not get node peer id: %v", err)
}

// get node peers
peers, err := client.rpcClient.GetNodePeers(ctx)
if err != nil {
return fmt.Errorf("could not get peers: %v", err)
}
client.peers = peers
client.lastPeerUpdateEpoch = client.pool.chainState.CurrentEpoch()

return nil
}
Expand Down

0 comments on commit 9955904

Please sign in to comment.