privval: retry GetPubKey/SignVote/SignProposal N times before

returning an error

Closes #4707
This commit is contained in:
Anton Kaliaev
2020-05-11 17:42:19 +04:00
committed by GitHub
parent a620e5fd96
commit 2afae13a48
6 changed files with 114 additions and 7 deletions

View File

@@ -1310,15 +1310,27 @@ func createAndStartPrivValidatorSocketClient(
) (types.PrivValidator, error) {
pve, err := privval.NewSignerListener(listenAddr, logger)
if err != nil {
return nil, errors.Wrap(err, "failed to start private validator")
return nil, fmt.Errorf("failed to start private validator: %w", err)
}
pvsc, err := privval.NewSignerClient(pve)
if err != nil {
return nil, errors.Wrap(err, "failed to start private validator")
return nil, fmt.Errorf("failed to start private validator: %w", err)
}
return pvsc, nil
// try to get a pubkey from private validate first time
_, err = pvsc.GetPubKey()
if err != nil {
return nil, fmt.Errorf("can't get pubkey: %w", err)
}
const (
retries = 50 // 50 * 100ms = 5s total
timeout = 100 * time.Millisecond
)
pvscWithRetries := privval.NewRetrySignerClient(pvsc, retries, timeout)
return pvscWithRetries, nil
}
// splitAndTrimEmpty slices s into all subslices separated by sep and returns a