[#1770] node: Reread config files on SIGHUP

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
Pavel Karpy 2022-09-30 16:33:30 +03:00 committed by fyrchik
parent 6fc3268ebf
commit ab3ef7110e
2 changed files with 22 additions and 1 deletions

View file

@ -154,6 +154,11 @@ func (a *applicationConfiguration) readConfig(c *config.Config) error {
if a._read { if a._read {
// clear if it is rereading // clear if it is rereading
*a = applicationConfiguration{} *a = applicationConfiguration{}
err := c.Reload()
if err != nil {
return err
}
} else { } else {
// update the status // update the status
a._read = true a._read = true

View file

@ -17,6 +17,8 @@ import (
type Config struct { type Config struct {
v *viper.Viper v *viper.Viper
opts opts
defaultPath []string defaultPath []string
path []string path []string
} }
@ -54,5 +56,19 @@ func New(_ Prm, opts ...Option) *Config {
return &Config{ return &Config{
v: v, v: v,
opts: *o,
} }
} }
// Reload reads configuration path if any was provided
// to the New. Returns any
func (x *Config) Reload() error {
if x.opts.path != "" {
err := x.v.ReadInConfig()
if err != nil {
return fmt.Errorf("rereading configuration file: %w", err)
}
}
return nil
}