forked from TrueCloudLab/neoneo-go
Merge pull request #1945 from nspcc-dev/network/tls
cli: reload RPC-server TLS config on SIGHUP
This commit is contained in:
commit
4fb421738b
2 changed files with 26 additions and 1 deletions
|
@ -5,6 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
|
|
||||||
"github.com/nspcc-dev/neo-go/cli/options"
|
"github.com/nspcc-dev/neo-go/cli/options"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/config"
|
"github.com/nspcc-dev/neo-go/pkg/config"
|
||||||
|
@ -325,6 +326,9 @@ func startServer(ctx *cli.Context) error {
|
||||||
go serv.Start(errChan)
|
go serv.Start(errChan)
|
||||||
rpcServer.Start(errChan)
|
rpcServer.Start(errChan)
|
||||||
|
|
||||||
|
sighupCh := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(sighupCh, syscall.SIGHUP)
|
||||||
|
|
||||||
fmt.Fprintln(ctx.App.Writer, logo())
|
fmt.Fprintln(ctx.App.Writer, logo())
|
||||||
fmt.Fprintln(ctx.App.Writer, serv.UserAgent)
|
fmt.Fprintln(ctx.App.Writer, serv.UserAgent)
|
||||||
fmt.Fprintln(ctx.App.Writer)
|
fmt.Fprintln(ctx.App.Writer)
|
||||||
|
@ -336,8 +340,20 @@ Main:
|
||||||
case err := <-errChan:
|
case err := <-errChan:
|
||||||
shutdownErr = fmt.Errorf("server error: %w", err)
|
shutdownErr = fmt.Errorf("server error: %w", err)
|
||||||
cancel()
|
cancel()
|
||||||
|
case sig := <-sighupCh:
|
||||||
|
switch sig {
|
||||||
|
case syscall.SIGHUP:
|
||||||
|
log.Info("SIGHUP received, restarting rpc-server")
|
||||||
|
serverErr := rpcServer.Shutdown()
|
||||||
|
if serverErr != nil {
|
||||||
|
errChan <- fmt.Errorf("error while restarting rpc-server: %w", serverErr)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
rpcServer = server.New(chain, cfg.ApplicationConfiguration.RPC, serv, serv.GetOracle(), log)
|
||||||
|
rpcServer.Start(errChan)
|
||||||
|
}
|
||||||
case <-grace.Done():
|
case <-grace.Done():
|
||||||
|
signal.Stop(sighupCh)
|
||||||
serv.Shutdown()
|
serv.Shutdown()
|
||||||
if serverErr := rpcServer.Shutdown(); serverErr != nil {
|
if serverErr := rpcServer.Shutdown(); serverErr != nil {
|
||||||
shutdownErr = fmt.Errorf("error on shutdown: %w", serverErr)
|
shutdownErr = fmt.Errorf("error on shutdown: %w", serverErr)
|
||||||
|
|
|
@ -52,6 +52,15 @@ Or specify a different network with appropriate flag like this:
|
||||||
By default the node will run in foreground using current standard output for
|
By default the node will run in foreground using current standard output for
|
||||||
logging.
|
logging.
|
||||||
|
|
||||||
|
### Restarting node services
|
||||||
|
|
||||||
|
To restart some of the node services without full node restart, send the SIGHUP
|
||||||
|
signal. List of the services to be restarted on SIGHUP receiving:
|
||||||
|
|
||||||
|
| Service | Action |
|
||||||
|
| --- | --- |
|
||||||
|
| RPC server | Restarting with the old configuration and updated TLS certificates |
|
||||||
|
|
||||||
### DB import/exports
|
### DB import/exports
|
||||||
|
|
||||||
Node operates using some database as a backend to store blockchain data. NeoGo
|
Node operates using some database as a backend to store blockchain data. NeoGo
|
||||||
|
|
Loading…
Reference in a new issue