diff --git a/node/node.go b/node/node.go index bdc4c68ff..b7b4d2aef 100644 --- a/node/node.go +++ b/node/node.go @@ -155,16 +155,6 @@ func NewNode(config *cfg.Config, return nil, err } - // If an address is provided, listen on the socket for a connection from an - // external signing process. - if config.PrivValidatorListenAddr != "" { - // FIXME: we should start services inside OnStart - privValidator, err = createPrivValidatorSocketClient(config.PrivValidatorListenAddr, genDoc.ChainID, logger) - if err != nil { - return nil, fmt.Errorf("error with private validator socket client: %w", err) - } - } - // Make MempoolReactor mempool, mempoolReactor := createMempoolAndMempoolReactor(config, proxyApp, state, memplMetrics, logger) @@ -307,6 +297,16 @@ func (n *Node) OnStart() error { time.Sleep(genTime.Sub(now)) } + // If an address is provided, listen on the socket for a connection from an + // external signing process. This will overwrite the privvalidator provided in the constructor + if n.config.PrivValidatorListenAddr != "" { + var err error + n.privValidator, err = createPrivValidatorSocketClient(n.config.PrivValidatorListenAddr, n.genesisDoc.ChainID, n.Logger) + if err != nil { + return fmt.Errorf("error with private validator socket client: %w", err) + } + } + pubKey, err := n.privValidator.GetPubKey() if err != nil { return fmt.Errorf("can't get pubkey: %w", err) diff --git a/node/node_test.go b/node/node_test.go index dd5c7a8be..c29d79f84 100644 --- a/node/node_test.go +++ b/node/node_test.go @@ -191,6 +191,8 @@ func TestNodeSetPrivValTCP(t *testing.T) { n, err := DefaultNewNode(config, log.TestingLogger()) require.NoError(t, err) + require.NoError(t, n.Start()) + defer n.Stop() //nolint:errcheck assert.IsType(t, &privval.RetrySignerClient{}, n.PrivValidator()) } @@ -203,7 +205,7 @@ func TestPrivValidatorListenAddrNoProtocol(t *testing.T) { config.BaseConfig.PrivValidatorListenAddr = addrNoPrefix _, err := DefaultNewNode(config, log.TestingLogger()) - assert.Error(t, err) + require.NoError(t, err) } func TestNodeSetPrivValIPC(t *testing.T) { diff --git a/node/setup.go b/node/setup.go index 6c74ffb45..dd6a21a9c 100644 --- a/node/setup.go +++ b/node/setup.go @@ -651,12 +651,6 @@ func createPrivValidatorSocketClient( return nil, fmt.Errorf("failed to start private validator: %w", err) } - // 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