diff --git a/dapps/valuetransfers/fpc.go b/dapps/valuetransfers/fpc.go index 850202eb8a4e3b46aebac371816a211b40528f1e..3bf6bd9c840a1522f52c3a6f0c798e262fbb324a 100644 --- a/dapps/valuetransfers/fpc.go +++ b/dapps/valuetransfers/fpc.go @@ -101,7 +101,10 @@ func configureFPC() { } func runFPC() { - if err := daemon.BackgroundWorker("FPCVoterServer", func(shutdownSignal <-chan struct{}) { + const ServerWorkerName = "FPCVoterServer" + if err := daemon.BackgroundWorker(ServerWorkerName, func(shutdownSignal <-chan struct{}) { + stopped := make(chan struct{}) + bindAddr := config.Node.GetString(CfgFPCBindAddress) voterServer = votenet.New(Voter(), func(id string) vote.Opinion { branchID, err := branchmanager.BranchIDFromBase58(id) if err != nil { @@ -123,21 +126,29 @@ func runFPC() { } return vote.Like - }, config.Node.GetString(CfgFPCBindAddress), + }, bindAddr, metrics.Events().FPCInboundBytes, metrics.Events().FPCOutboundBytes, - metrics.Events().QueryReceived) + metrics.Events().QueryReceived, + ) go func() { + log.Infof("%s started, bind-address=%s", ServerWorkerName, bindAddr) if err := voterServer.Run(); err != nil { - log.Error(err) + log.Errorf("Error serving: %s", err) } + close(stopped) }() - log.Infof("Started vote server on %s", config.Node.GetString(CfgFPCBindAddress)) - <-shutdownSignal + // stop if we are shutting down or the server could not be started + select { + case <-shutdownSignal: + case <-stopped: + } + + log.Infof("Stopping %s ...", ServerWorkerName) voterServer.Shutdown() - log.Info("Stopped vote server") + log.Infof("Stopping %s ... done", ServerWorkerName) }, shutdown.PriorityFPC); err != nil { log.Panicf("Failed to start as daemon: %s", err) } diff --git a/packages/vote/net/server.go b/packages/vote/net/server.go index d6207a73fddfc1574167f0bf3bf0f5bda10d2f23..97209c509c500011758a414921b971ddf3d69000 100644 --- a/packages/vote/net/server.go +++ b/packages/vote/net/server.go @@ -21,6 +21,7 @@ func New(voter vote.Voter, opnRetriever OpinionRetriever, bindAddr string, netRx voter: voter, opnRetriever: opnRetriever, bindAddr: bindAddr, + grpcServer: grpc.NewServer(), netRxEvent: netRxEvent, netTxEvent: netTxEvent, queryReceivedEvent: queryReceivedEvent, @@ -71,9 +72,7 @@ func (vs *VoterServer) Run() error { return err } - vs.grpcServer = grpc.NewServer() RegisterVoterQueryServer(vs.grpcServer, vs) - return vs.grpcServer.Serve(listener) } diff --git a/plugins/analysis/client/connector.go b/plugins/analysis/client/connector.go index cd9da66a1b43d1a5b1f6b43c9c45fc63384d3e6d..269b764763784be4cd1e8ed9240fd74a7449fde9 100644 --- a/plugins/analysis/client/connector.go +++ b/plugins/analysis/client/connector.go @@ -93,7 +93,7 @@ func (c *Connector) dial() { return default: c.conn = nil - conn, err := net.Dial(c.network, c.address) + conn, err := net.DialTimeout(c.network, c.address, 5*time.Second) if err != nil { go c.scheduleRedial() return