From fd3e46981d7d59f85a6951610735f352e4d4c9cb Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 4 Aug 2022 11:47:57 +0300 Subject: [PATCH 1/9] initial commit --- common/network/port.go | 30 ++++++++++++++++ internal/cli/server/command.go | 2 +- internal/cli/server/helper.go | 60 ++++++------------------------- internal/cli/server/server.go | 64 ++++++++++++++++++++++++++++------ 4 files changed, 95 insertions(+), 61 deletions(-) create mode 100644 common/network/port.go diff --git a/common/network/port.go b/common/network/port.go new file mode 100644 index 0000000000..20e1f0ee3c --- /dev/null +++ b/common/network/port.go @@ -0,0 +1,30 @@ +package network + +import ( + "errors" + "net" +) + +const ( + maxPortCheck = 100 + + emptyPort = ":0" +) + +var ( + ErrCantFindAPort = errors.New("no available port found") +) + +// FindAvailablePort returns the an available port +func FindAvailablePort() (int, net.Listener, error) { + for i := uint(0); i < maxPortCheck; i++ { + listener, err := net.Listen("tcp", emptyPort) + if err != nil { + continue + } + + return listener.Addr().(*net.TCPAddr).Port, listener, nil + } + + return 0, nil, ErrCantFindAPort +} diff --git a/internal/cli/server/command.go b/internal/cli/server/command.go index 2995f10f69..0d15d4305b 100644 --- a/internal/cli/server/command.go +++ b/internal/cli/server/command.go @@ -101,7 +101,7 @@ func (c *Command) Run(args []string) int { return 1 } - srv, err := NewServer(c.config) + srv, err := NewServer(c.config, WithGRPCAddress()) if err != nil { c.UI.Error(err.Error()) return 1 diff --git a/internal/cli/server/helper.go b/internal/cli/server/helper.go index 428acceea3..68f1bf96c4 100644 --- a/internal/cli/server/helper.go +++ b/internal/cli/server/helper.go @@ -1,76 +1,38 @@ package server import ( - "fmt" - "math/rand" - "net" "os" - "sync/atomic" - "time" -) - -var maxPortCheck int32 = 100 - -// findAvailablePort returns the next available port starting from `from` -func findAvailablePort(from int32, count int32) (int32, error) { - if count == maxPortCheck { - return 0, fmt.Errorf("no available port found") - } - - port := atomic.AddInt32(&from, 1) - addr := fmt.Sprintf("localhost:%d", port) - count++ - - lis, err := net.Listen("tcp", addr) - if err == nil { - lis.Close() - return port, nil - } else { - return findAvailablePort(from, count) - } -} + "github.com/ethereum/go-ethereum/common/network" +) func CreateMockServer(config *Config) (*Server, error) { if config == nil { config = DefaultConfig() } - // find available port for grpc server - rand.Seed(time.Now().UnixNano()) - - var ( - from int32 = 60000 // the min port to start checking from - to int32 = 61000 // the max port to start checking from - ) - - //nolint: gosec - port, err := findAvailablePort(rand.Int31n(to-from+1)+from, 0) + _, gRPCListener, err := network.FindAvailablePort() if err != nil { return nil, err } - // grpc port - config.GRPC.Addr = fmt.Sprintf(":%d", port) - // datadir - datadir, _ := os.MkdirTemp("/tmp", "bor-cli-test") - config.DataDir = datadir + datadir, err := os.MkdirTemp("/tmp", "bor-cli-test") + if err != nil { + return nil, err + } - // find available port for http server - from = 8545 - to = 9545 + config.DataDir = datadir - //nolint: gosec - port, err = findAvailablePort(rand.Int31n(to-from+1)+from, 0) + jsonRPCPort, jsonRPCListener, err := network.FindAvailablePort() if err != nil { return nil, err } - config.JsonRPC.Http.Port = uint64(port) + config.JsonRPC.Http.Port = uint64(jsonRPCPort) // start the server - return NewServer(config) + return NewServer(config, WithGRPCListener(gRPCListener), WithJSONRPCListener(jsonRPCListener)) } func CloseMockServer(server *Server) { diff --git a/internal/cli/server/server.go b/internal/cli/server/server.go index 77d310061c..09bbfbf995 100644 --- a/internal/cli/server/server.go +++ b/internal/cli/server/server.go @@ -48,9 +48,33 @@ type Server struct { // tracerAPI to trace block executions tracerAPI *tracers.API + + jsonRPCListener net.Listener +} + +type serverOption func(srv *Server, config *Config) error + +func WithGRPCAddress() serverOption { + return func(srv *Server, config *Config) error { + return srv.gRPCServerByAddress(config.GRPC.Addr) + } +} + +func WithGRPCListener(lis net.Listener) serverOption { + return func(srv *Server, _ *Config) error { + return srv.gRPCServerByListener(lis) + } } -func NewServer(config *Config) (*Server, error) { +func WithJSONRPCListener(lis net.Listener) serverOption { + return func(srv *Server, _ *Config) error { + srv.jsonRPCListener = lis + + return nil + } +} + +func NewServer(config *Config, opts ...serverOption) (*Server, error) { srv := &Server{ config: config, } @@ -58,8 +82,13 @@ func NewServer(config *Config) (*Server, error) { // start the logger setupLogger(config.LogLevel) - if err := srv.setupGRPCServer(config.GRPC.Addr); err != nil { - return nil, err + var err error + + for _, opt := range opts { + err = opt(srv, config) + if err != nil { + return nil, err + } } // load the chain genesis @@ -217,8 +246,17 @@ func NewServer(config *Config) (*Server, error) { } func (s *Server) Stop() { - s.node.Close() - s.grpcServer.Stop() + if s.node != nil { + s.node.Close() + } + + if s.grpcServer != nil { + s.grpcServer.Stop() + } + + if s.jsonRPCListener != nil { + s.jsonRPCListener.Close() + } // shutdown the tracer if s.tracer != nil { @@ -327,22 +365,26 @@ func (s *Server) setupMetrics(config *TelemetryConfig, serviceName string) error return nil } -func (s *Server) setupGRPCServer(addr string) error { - s.grpcServer = grpc.NewServer(s.withLoggingUnaryInterceptor()) - proto.RegisterBorServer(s.grpcServer, s) - +func (s *Server) gRPCServerByAddress(addr string) error { lis, err := net.Listen("tcp", addr) if err != nil { return err } + return s.gRPCServerByListener(lis) +} + +func (s *Server) gRPCServerByListener(listener net.Listener) error { + s.grpcServer = grpc.NewServer(s.withLoggingUnaryInterceptor()) + proto.RegisterBorServer(s.grpcServer, s) + go func() { - if err := s.grpcServer.Serve(lis); err != nil { + if err := s.grpcServer.Serve(listener); err != nil { log.Error("failed to serve grpc server", "err", err) } }() - log.Info("GRPC Server started", "addr", addr) + log.Info("GRPC Server started", "addr", listener.Addr()) return nil } From f68bcc5751362714f0710d86dbb36f4f2c54b9cd Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 4 Aug 2022 11:50:47 +0300 Subject: [PATCH 2/9] safe latest error --- common/network/port.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/common/network/port.go b/common/network/port.go index 20e1f0ee3c..e8e13c2c9d 100644 --- a/common/network/port.go +++ b/common/network/port.go @@ -2,6 +2,7 @@ package network import ( "errors" + "fmt" "net" ) @@ -17,8 +18,13 @@ var ( // FindAvailablePort returns the an available port func FindAvailablePort() (int, net.Listener, error) { + var ( + listener net.Listener + err error + ) + for i := uint(0); i < maxPortCheck; i++ { - listener, err := net.Listen("tcp", emptyPort) + listener, err = net.Listen("tcp", emptyPort) if err != nil { continue } @@ -26,5 +32,5 @@ func FindAvailablePort() (int, net.Listener, error) { return listener.Addr().(*net.TCPAddr).Port, listener, nil } - return 0, nil, ErrCantFindAPort + return 0, nil, fmt.Errorf("%w: %s", ErrCantFindAPort, err) } From dde1928d6032066bf7b9468aac52bd148bfebc56 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Mon, 8 Aug 2022 11:42:07 +0300 Subject: [PATCH 3/9] remove json listener --- common/network/port.go | 2 +- consensus/bor/heimdallgrpc/state_sync.go | 10 ++++++---- eth/downloader/downloader.go | 10 ++++++---- eth/filters/test_backend.go | 6 +++++- internal/cli/debug_test.go | 2 +- internal/cli/server/config_legacy.go | 4 ++-- internal/cli/server/helper.go | 12 +++--------- internal/cli/server/server.go | 4 ++-- node/node.go | 16 ++++++++++++++-- node/rpcstack.go | 3 ++- 10 files changed, 42 insertions(+), 27 deletions(-) diff --git a/common/network/port.go b/common/network/port.go index e8e13c2c9d..f92b59ac11 100644 --- a/common/network/port.go +++ b/common/network/port.go @@ -9,7 +9,7 @@ import ( const ( maxPortCheck = 100 - emptyPort = ":0" + emptyPort = "127.0.0.1:0" ) var ( diff --git a/consensus/bor/heimdallgrpc/state_sync.go b/consensus/bor/heimdallgrpc/state_sync.go index aa10f0c5c3..f5f66caf8c 100644 --- a/consensus/bor/heimdallgrpc/state_sync.go +++ b/consensus/bor/heimdallgrpc/state_sync.go @@ -3,10 +3,10 @@ package heimdallgrpc import ( "context" + proto "github.com/maticnetwork/polyproto/heimdall" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus/bor/clerk" - - proto "github.com/maticnetwork/polyproto/heimdall" ) func (h *HeimdallGRPCClient) StateSyncEvents(ctx context.Context, fromID uint64, to int64) ([]*clerk.EventRecordWithTime, error) { @@ -23,8 +23,10 @@ func (h *HeimdallGRPCClient) StateSyncEvents(ctx context.Context, fromID uint64, return nil, err } + var events *proto.StateSyncEventsResponse + for { - events, err := res.Recv() + events, err = res.Recv() if err != nil { break } @@ -45,5 +47,5 @@ func (h *HeimdallGRPCClient) StateSyncEvents(ctx context.Context, fromID uint64, } } - return eventRecords, nil + return eventRecords, err } diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 34b8c95715..f92bc652a6 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -207,7 +207,7 @@ type BlockChain interface { } // New creates a new downloader to fetch hashes and blocks from remote peers. -//nolint: staticcheck +// nolint: staticcheck func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn, success func(), whitelistService ethereum.ChainValidator) *Downloader { if lightchain == nil { lightchain = chain @@ -729,9 +729,11 @@ func (d *Downloader) fetchHead(p *peerConnection) (head *types.Header, pivot *ty // calculateRequestSpan calculates what headers to request from a peer when trying to determine the // common ancestor. // It returns parameters to be used for peer.RequestHeadersByNumber: -// from - starting block number -// count - number of headers to request -// skip - number of headers to skip +// +// from - starting block number +// count - number of headers to request +// skip - number of headers to skip +// // and also returns 'max', the last block which is expected to be returned by the remote peers, // given the (from,count,skip) func calculateRequestSpan(remoteHeight, localHeight uint64) (int64, int, int, uint64) { diff --git a/eth/filters/test_backend.go b/eth/filters/test_backend.go index c6496f4a08..cf7ac7f734 100644 --- a/eth/filters/test_backend.go +++ b/eth/filters/test_backend.go @@ -48,10 +48,14 @@ func (b *TestBackend) GetBorBlockReceipt(ctx context.Context, hash common.Hash) func (b *TestBackend) GetBorBlockLogs(ctx context.Context, hash common.Hash) ([]*types.Log, error) { receipt, err := b.GetBorBlockReceipt(ctx, hash) - if receipt == nil || err != nil { + if receipt == nil { return []*types.Log{}, nil } + if err != nil { + return []*types.Log{}, err + } + return receipt.Logs, nil } diff --git a/internal/cli/debug_test.go b/internal/cli/debug_test.go index 94765ddba7..fd896ef326 100644 --- a/internal/cli/debug_test.go +++ b/internal/cli/debug_test.go @@ -13,7 +13,7 @@ import ( "github.com/ethereum/go-ethereum/internal/cli/server" ) -var currentDir string = "" +var currentDir string func TestCommand_DebugBlock(t *testing.T) { t.Parallel() diff --git a/internal/cli/server/config_legacy.go b/internal/cli/server/config_legacy.go index 9411b8290d..ccc05eb4a7 100644 --- a/internal/cli/server/config_legacy.go +++ b/internal/cli/server/config_legacy.go @@ -2,13 +2,13 @@ package server import ( "fmt" - "io/ioutil" + "os" "github.com/BurntSushi/toml" ) func readLegacyConfig(path string) (*Config, error) { - data, err := ioutil.ReadFile(path) + data, err := os.ReadFile(path) tomlData := string(data) if err != nil { diff --git a/internal/cli/server/helper.go b/internal/cli/server/helper.go index 68f1bf96c4..44db7e5f43 100644 --- a/internal/cli/server/helper.go +++ b/internal/cli/server/helper.go @@ -17,22 +17,16 @@ func CreateMockServer(config *Config) (*Server, error) { } // datadir - datadir, err := os.MkdirTemp("/tmp", "bor-cli-test") + datadir, err := os.MkdirTemp("", "bor-cli-test") if err != nil { return nil, err } config.DataDir = datadir - - jsonRPCPort, jsonRPCListener, err := network.FindAvailablePort() - if err != nil { - return nil, err - } - - config.JsonRPC.Http.Port = uint64(jsonRPCPort) + config.JsonRPC.Http.Port = 0 // start the server - return NewServer(config, WithGRPCListener(gRPCListener), WithJSONRPCListener(jsonRPCListener)) + return NewServer(config, WithGRPCListener(gRPCListener)) } func CloseMockServer(server *Server) { diff --git a/internal/cli/server/server.go b/internal/cli/server/server.go index 09bbfbf995..788ed953e8 100644 --- a/internal/cli/server/server.go +++ b/internal/cli/server/server.go @@ -74,6 +74,7 @@ func WithJSONRPCListener(lis net.Listener) serverOption { } } +//nolint:gocognit func NewServer(config *Config, opts ...serverOption) (*Server, error) { srv := &Server{ config: config, @@ -92,7 +93,7 @@ func NewServer(config *Config, opts ...serverOption) (*Server, error) { } // load the chain genesis - if err := config.loadChain(); err != nil { + if err = config.loadChain(); err != nil { return nil, err } @@ -180,7 +181,6 @@ func NewServer(config *Config, opts ...serverOption) (*Server, error) { wallet, err := accountManager.Find(accounts.Account{Address: eb}) if wallet == nil || err != nil { log.Error("Etherbase account unavailable locally", "err", err) - return nil, fmt.Errorf("signer missing: %v", err) } diff --git a/node/node.go b/node/node.go index 7c540306db..0a1722b78f 100644 --- a/node/node.go +++ b/node/node.go @@ -20,6 +20,7 @@ import ( crand "crypto/rand" "errors" "fmt" + "net" "net/http" "os" "path/filepath" @@ -27,6 +28,8 @@ import ( "strings" "sync" + "github.com/prometheus/tsdb/fileutil" + "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" @@ -36,7 +39,6 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/rpc" - "github.com/prometheus/tsdb/fileutil" ) // Node is a container on which services can be registered. @@ -466,6 +468,11 @@ func (n *Node) startRPC() error { if err := initHttp(n.http, open, n.config.HTTPPort); err != nil { return err } + if n.config.HTTPPort == 0 { + defer func() { + n.config.HTTPPort = n.http.listener.Addr().(*net.TCPAddr).Port + }() + } } // Configure WebSocket. if n.config.WSHost != "" { @@ -473,6 +480,11 @@ func (n *Node) startRPC() error { if err := initWS(open, n.config.WSPort); err != nil { return err } + if n.config.WSPort == 0 { + defer func() { + n.config.WSPort = n.ws.listener.Addr().(*net.TCPAddr).Port + }() + } } // Configure authenticated API if len(open) != len(all) { @@ -480,7 +492,7 @@ func (n *Node) startRPC() error { if err != nil { return err } - if err := initAuth(all, n.config.AuthPort, jwtSecret); err != nil { + if err = initAuth(all, n.config.AuthPort, jwtSecret); err != nil { return err } } diff --git a/node/rpcstack.go b/node/rpcstack.go index d9c41cca57..eabf1dcae7 100644 --- a/node/rpcstack.go +++ b/node/rpcstack.go @@ -29,9 +29,10 @@ import ( "sync" "sync/atomic" + "github.com/rs/cors" + "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/rpc" - "github.com/rs/cors" ) // httpConfig is the JSON-RPC/HTTP configuration. From a96ecb063e0cee4bcce0b04758b458b964dcbe9f Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Mon, 8 Aug 2022 16:51:28 +0530 Subject: [PATCH 4/9] fix: debug block unit test --- internal/cli/server/helper.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/cli/server/helper.go b/internal/cli/server/helper.go index 44db7e5f43..97c49dcad3 100644 --- a/internal/cli/server/helper.go +++ b/internal/cli/server/helper.go @@ -1,6 +1,7 @@ package server import ( + "fmt" "os" "github.com/ethereum/go-ethereum/common/network" @@ -11,11 +12,15 @@ func CreateMockServer(config *Config) (*Server, error) { config = DefaultConfig() } - _, gRPCListener, err := network.FindAvailablePort() + // get grpc port and listener + grpcPort, gRPCListener, err := network.FindAvailablePort() if err != nil { return nil, err } + // The test uses grpc port from config so setting it here. + config.GRPC.Addr = fmt.Sprintf(":%d", grpcPort) + // datadir datadir, err := os.MkdirTemp("", "bor-cli-test") if err != nil { @@ -23,7 +28,7 @@ func CreateMockServer(config *Config) (*Server, error) { } config.DataDir = datadir - config.JsonRPC.Http.Port = 0 + config.JsonRPC.Http.Port = 0 // It will choose a free/available port // start the server return NewServer(config, WithGRPCListener(gRPCListener)) From e730d36b79a0bee1db3494f2e2c796c41ebde4a9 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Mon, 8 Aug 2022 16:52:08 +0530 Subject: [PATCH 5/9] remove jsonrpc listener from server --- internal/cli/server/server.go | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/internal/cli/server/server.go b/internal/cli/server/server.go index 788ed953e8..736b0d3bb7 100644 --- a/internal/cli/server/server.go +++ b/internal/cli/server/server.go @@ -48,8 +48,6 @@ type Server struct { // tracerAPI to trace block executions tracerAPI *tracers.API - - jsonRPCListener net.Listener } type serverOption func(srv *Server, config *Config) error @@ -66,14 +64,6 @@ func WithGRPCListener(lis net.Listener) serverOption { } } -func WithJSONRPCListener(lis net.Listener) serverOption { - return func(srv *Server, _ *Config) error { - srv.jsonRPCListener = lis - - return nil - } -} - //nolint:gocognit func NewServer(config *Config, opts ...serverOption) (*Server, error) { srv := &Server{ @@ -254,10 +244,6 @@ func (s *Server) Stop() { s.grpcServer.Stop() } - if s.jsonRPCListener != nil { - s.jsonRPCListener.Close() - } - // shutdown the tracer if s.tracer != nil { if err := s.tracer.Shutdown(context.Background()); err != nil { From 8f8613136a0fdcd0cb352a214386a5b3b9a15538 Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Mon, 8 Aug 2022 17:04:51 +0530 Subject: [PATCH 6/9] fix: consume network's find port in heimdall client test --- consensus/bor/heimdall/client_test.go | 42 +++++++++------------------ 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/consensus/bor/heimdall/client_test.go b/consensus/bor/heimdall/client_test.go index f9ed0028b1..463a7401bc 100644 --- a/consensus/bor/heimdall/client_test.go +++ b/consensus/bor/heimdall/client_test.go @@ -9,11 +9,11 @@ import ( "net" "net/http" "sync" - "sync/atomic" "testing" "time" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/network" "github.com/ethereum/go-ethereum/consensus/bor/heimdall/checkpoint" "github.com/stretchr/testify/require" @@ -34,7 +34,7 @@ func (h *HttpHandlerFake) GetCheckpointHandler() http.HandlerFunc { } } -func CreateMockHeimdallServer(wg *sync.WaitGroup, port int32, handler *HttpHandlerFake) (*http.Server, error) { +func CreateMockHeimdallServer(wg *sync.WaitGroup, port int, listener net.Listener, handler *HttpHandlerFake) (*http.Server, error) { // Create a new server mux mux := http.NewServeMux() @@ -51,6 +51,12 @@ func CreateMockHeimdallServer(wg *sync.WaitGroup, port int32, handler *HttpHandl Handler: mux, } + // Close the listener using the port and immediately consume it below + err := listener.Close() + if err != nil { + return nil, err + } + go func() { defer wg.Done() @@ -93,12 +99,12 @@ func TestFetchCheckpointFromMockHeimdall(t *testing.T) { } } - // Fetch available port starting from 50000 - port, err := findAvailablePort(50000, 0) + // Fetch available port + port, listener, err := network.FindAvailablePort() require.NoError(t, err, "expect no error in finding available port") // Create mock heimdall server and pass handler instance for setting up the routes - srv, err := CreateMockHeimdallServer(wg, port, handler) + srv, err := CreateMockHeimdallServer(wg, port, listener, handler) require.NoError(t, err, "expect no error in starting mock heimdall server") // Create a new heimdall client and use same port for connection @@ -150,12 +156,12 @@ func TestFetchShutdown(t *testing.T) { } } - // Fetch available port starting from 50000 - port, err := findAvailablePort(50000, 0) + // Fetch available port + port, listener, err := network.FindAvailablePort() require.NoError(t, err, "expect no error in finding available port") // Create mock heimdall server and pass handler instance for setting up the routes - srv, err := CreateMockHeimdallServer(wg, port, handler) + srv, err := CreateMockHeimdallServer(wg, port, listener, handler) require.NoError(t, err, "expect no error in starting mock heimdall server") // Create a new heimdall client and use same port for connection @@ -216,26 +222,6 @@ func TestFetchShutdown(t *testing.T) { wg.Wait() } -// findAvailablePort returns the next available port starting from `from` -func findAvailablePort(from int32, count int32) (int32, error) { - if count == maxPortCheck { - return 0, fmt.Errorf("no available port found") - } - - port := atomic.AddInt32(&from, 1) - addr := fmt.Sprintf("localhost:%d", port) - - count++ - - lis, err := net.Listen("tcp", addr) - if err == nil { - lis.Close() - return port, nil - } else { - return findAvailablePort(from, count) - } -} - // TestContext includes bunch of simple tests to verify the working of timeout // based context and cancellation. func TestContext(t *testing.T) { From 9a7a7dfbcebd74f54f24fc0d7c800463a17022de Mon Sep 17 00:00:00 2001 From: Manav Darji Date: Mon, 8 Aug 2022 17:07:28 +0530 Subject: [PATCH 7/9] update key in log while startup --- internal/cli/server/command.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/cli/server/command.go b/internal/cli/server/command.go index 0d15d4305b..aeb435a361 100644 --- a/internal/cli/server/command.go +++ b/internal/cli/server/command.go @@ -72,7 +72,7 @@ func (c *Command) extractFlags(args []string) error { } // read if config file is provided, this will overwrite the cli flags, if provided if c.configFile != "" { - log.Warn("Config File provided, this will overwrite the cli flags.", "configFile:", c.configFile) + log.Warn("Config File provided, this will overwrite the cli flags", "path", c.configFile) cfg, err := readConfigFile(c.configFile) if err != nil { c.UI.Error(err.Error()) From 72b047fb40185c2261209dbb20fac4f14c23bd2d Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 11 Aug 2022 16:05:48 +0300 Subject: [PATCH 8/9] linters --- consensus/bor/heimdall/client_test.go | 2 -- consensus/bor/heimdallgrpc/state_sync.go | 2 -- node/node.go | 3 +++ 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/consensus/bor/heimdall/client_test.go b/consensus/bor/heimdall/client_test.go index 463a7401bc..22265c1975 100644 --- a/consensus/bor/heimdall/client_test.go +++ b/consensus/bor/heimdall/client_test.go @@ -19,8 +19,6 @@ import ( "github.com/stretchr/testify/require" ) -var maxPortCheck int32 = 100 - // HttpHandlerFake defines the handler functions required to serve // requests to the mock heimdal server for specific functions. Add more handlers // according to requirements. diff --git a/consensus/bor/heimdallgrpc/state_sync.go b/consensus/bor/heimdallgrpc/state_sync.go index 10579b633e..910fb6c4ee 100644 --- a/consensus/bor/heimdallgrpc/state_sync.go +++ b/consensus/bor/heimdallgrpc/state_sync.go @@ -29,8 +29,6 @@ func (h *HeimdallGRPCClient) StateSyncEvents(ctx context.Context, fromID uint64, return nil, err } - var events *proto.StateSyncEventsResponse - for { events, err = res.Recv() if err != nil { diff --git a/node/node.go b/node/node.go index 0a1722b78f..bf4e8fe0cc 100644 --- a/node/node.go +++ b/node/node.go @@ -468,6 +468,7 @@ func (n *Node) startRPC() error { if err := initHttp(n.http, open, n.config.HTTPPort); err != nil { return err } + if n.config.HTTPPort == 0 { defer func() { n.config.HTTPPort = n.http.listener.Addr().(*net.TCPAddr).Port @@ -480,6 +481,7 @@ func (n *Node) startRPC() error { if err := initWS(open, n.config.WSPort); err != nil { return err } + if n.config.WSPort == 0 { defer func() { n.config.WSPort = n.ws.listener.Addr().(*net.TCPAddr).Port @@ -492,6 +494,7 @@ func (n *Node) startRPC() error { if err != nil { return err } + if err = initAuth(all, n.config.AuthPort, jwtSecret); err != nil { return err } From 172f3a1ba6175a1d7624b367e58812a5de445064 Mon Sep 17 00:00:00 2001 From: Evgeny Danienko <6655321@bk.ru> Date: Thu, 11 Aug 2022 18:54:58 +0300 Subject: [PATCH 9/9] fix --- node/node.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/node/node.go b/node/node.go index bf4e8fe0cc..e12bcf6675 100644 --- a/node/node.go +++ b/node/node.go @@ -469,11 +469,11 @@ func (n *Node) startRPC() error { return err } - if n.config.HTTPPort == 0 { - defer func() { + defer func() { + if n.http.listener != nil { n.config.HTTPPort = n.http.listener.Addr().(*net.TCPAddr).Port - }() - } + } + }() } // Configure WebSocket. if n.config.WSHost != "" { @@ -482,11 +482,11 @@ func (n *Node) startRPC() error { return err } - if n.config.WSPort == 0 { - defer func() { + defer func() { + if n.ws.listener != nil { n.config.WSPort = n.ws.listener.Addr().(*net.TCPAddr).Port - }() - } + } + }() } // Configure authenticated API if len(open) != len(all) { @@ -499,12 +499,14 @@ func (n *Node) startRPC() error { return err } } + // Start the servers for _, server := range servers { if err := server.start(); err != nil { return err } } + return nil }