Clean up submitter messages.

This commit is contained in:
Jim McDonald 2020-11-24 22:58:32 +00:00
parent b1f2a7427a
commit b53a039da9
No known key found for this signature in database
GPG Key ID: 89CEB61B2AD2A5E7
6 changed files with 43 additions and 24 deletions

View File

@ -1,4 +1,5 @@
Development:
- provide clearer log messages for submitter
- upgrade wallet account manager to be able to accept multiple attestations to sign in a single request
0.9.0

View File

@ -44,7 +44,7 @@ func New(ctx context.Context, params ...Parameter) (*Service, error) {
}
// Set logging.
log = zerologger.With().Str("strategy", "submitter").Str("impl", "all").Logger()
log = zerologger.With().Str("strategy", "submitter").Str("impl", "multinode").Logger()
if parameters.logLevel != log.GetLevel() {
log = log.Level(parameters.logLevel)
}

View File

@ -49,13 +49,10 @@ func (s *Service) SubmitAggregateAttestations(ctx context.Context, aggregates []
}
defer sem.Release(1)
_, address := s.serviceInfo(ctx, submitter)
started := time.Now()
err := submitter.SubmitAggregateAttestations(ctx, aggregates)
if service, isService := submitter.(eth2client.Service); isService {
s.clientMonitor.ClientOperation(service.Address(), "submit aggregate attestation", err == nil, time.Since(started))
} else {
s.clientMonitor.ClientOperation("<unknown>", "submit aggregate attestation", err == nil, time.Since(started))
}
s.clientMonitor.ClientOperation(address, "submit aggregate attestation", err == nil, time.Since(started))
if err != nil {
log.Warn().Err(err).Msg("Failed to submit aggregate attestations")
return

View File

@ -50,22 +50,25 @@ func (s *Service) SubmitAttestation(ctx context.Context, attestation *spec.Attes
}
defer sem.Release(1)
serverType, address := s.serviceInfo(ctx, submitter)
started := time.Now()
err := submitter.SubmitAttestation(ctx, attestation)
if service, isService := submitter.(eth2client.Service); isService {
s.clientMonitor.ClientOperation(service.Address(), "submit attestation", err == nil, time.Since(started))
} else {
s.clientMonitor.ClientOperation("<unknown>", "submit attestation", err == nil, time.Since(started))
}
s.clientMonitor.ClientOperation(address, "submit attestation", err == nil, time.Since(started))
if err != nil {
if strings.Contains(err.Error(), "PriorAttestationKnown") {
switch {
case serverType == "lighthouse" && strings.Contains(err.Error(), "PriorAttestationKnown"):
// Lighthouse rejects duplicate attestations. It is possible that an attestation we sent
// to another node already propagated to this node, so ignore the error.
log.Trace().Msg("Node already knows about attestation; ignored")
} else {
case serverType == "lighthouse" && strings.Contains(err.Error(), "UnknownHeadBlock"):
// Lighthouse rejects an attestation for a block that is not its current head. It is possible
// that the node is just behind, and we can't do anything about it anyway at this point having
// already signed an attestation for this slot, so ignore the error.
log.Trace().Msg("Node does not know head slot; ignored")
default:
log.Warn().Err(err).Msg("Failed to submit attestation")
return
}
return
}
log.Trace().Msg("Submitted attestation")
}(ctx, sem, &wg, name, submitter)
@ -81,3 +84,27 @@ func (s *Service) SubmitAttestation(ctx context.Context, attestation *spec.Attes
return nil
}
// serviceInfo returns the service name and provider information.
func (s *Service) serviceInfo(ctx context.Context, submitter interface{}) (string, string) {
serviceName := "<unknown>"
provider := "<unknown>"
if service, isService := submitter.(eth2client.Service); isService {
provider = service.Address()
}
if service, isService := submitter.(eth2client.NodeVersionProvider); isService {
nodeVersion, err := service.NodeVersion(ctx)
if err == nil {
switch {
case strings.Contains(strings.ToLower(nodeVersion), "lighthouse"):
serviceName = "lighthouse"
case strings.Contains(strings.ToLower(nodeVersion), "prysm"):
serviceName = "prysm"
case strings.Contains(strings.ToLower(nodeVersion), "teku"):
serviceName = "teku"
}
}
}
return serviceName, provider
}

View File

@ -49,13 +49,10 @@ func (s *Service) SubmitBeaconBlock(ctx context.Context, block *spec.SignedBeaco
}
defer sem.Release(1)
_, address := s.serviceInfo(ctx, submitter)
started := time.Now()
err := submitter.SubmitBeaconBlock(ctx, block)
if service, isService := submitter.(eth2client.Service); isService {
s.clientMonitor.ClientOperation(service.Address(), "submit beacon block", err == nil, time.Since(started))
} else {
s.clientMonitor.ClientOperation("<unknown>", "submit beacon block", err == nil, time.Since(started))
}
s.clientMonitor.ClientOperation(address, "submit beacon block", err == nil, time.Since(started))
if err != nil {
log.Warn().Err(err).Msg("Failed to submit beacon block")
return

View File

@ -49,13 +49,10 @@ func (s *Service) SubmitBeaconCommitteeSubscriptions(ctx context.Context, subscr
}
defer sem.Release(1)
_, address := s.serviceInfo(ctx, submitter)
started := time.Now()
err := submitter.SubmitBeaconCommitteeSubscriptions(ctx, subscriptions)
if service, isService := submitter.(eth2client.Service); isService {
s.clientMonitor.ClientOperation(service.Address(), "submit beacon committee subscription", err == nil, time.Since(started))
} else {
s.clientMonitor.ClientOperation("<unknown>", "submit beacon committee subscription", err == nil, time.Since(started))
}
s.clientMonitor.ClientOperation(address, "submit beacon committee subscription", err == nil, time.Since(started))
if err != nil {
log.Warn().Err(err).Msg("Failed to submit beacon committee subscription")
return