Issue #219: Fix waiting for save on shutdown
Improve the logic License: MIT Signed-off-by: Hector Sanjuan <hector@protocol.ai>
This commit is contained in:
parent
01fc55550a
commit
d1473fd3be
|
@ -118,10 +118,11 @@ func (cfg *Manager) watchSave(save <-chan struct{}) {
|
|||
defer ticker.Stop()
|
||||
|
||||
thingsToSave := false
|
||||
exit := false
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-save:
|
||||
thingsToSave = true
|
||||
case <-ticker.C:
|
||||
if thingsToSave {
|
||||
err := cfg.SaveJSON("")
|
||||
|
@ -130,13 +131,13 @@ func (cfg *Manager) watchSave(save <-chan struct{}) {
|
|||
}
|
||||
thingsToSave = false
|
||||
}
|
||||
if exit {
|
||||
|
||||
// Exit if we have to
|
||||
select {
|
||||
case <-cfg.ctx.Done():
|
||||
return
|
||||
default:
|
||||
}
|
||||
case <-save:
|
||||
thingsToSave = true
|
||||
case <-cfg.ctx.Done():
|
||||
exit = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -264,6 +264,9 @@ func run(c *cli.Context) error {
|
|||
func daemon(c *cli.Context) error {
|
||||
// Load all the configurations
|
||||
cfg, clusterCfg, apiCfg, ipfshttpCfg, consensusCfg, monCfg, diskInfCfg, numpinInfCfg := makeConfigs()
|
||||
// always wait for configuration to be saved
|
||||
defer cfg.Shutdown()
|
||||
|
||||
err := cfg.LoadJSONFromFile(configPath)
|
||||
checkErr("loading configuration", err)
|
||||
|
||||
|
@ -323,8 +326,6 @@ func daemon(c *cli.Context) error {
|
|||
//case <-cluster.Ready():
|
||||
}
|
||||
}
|
||||
// wait for configuration to be saved
|
||||
cfg.Shutdown()
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user