From d92380cccb5abee74b5c42b2097b2e4190cdb3b7 Mon Sep 17 00:00:00 2001 From: shoopea Date: Sun, 28 Dec 2025 16:31:28 +0100 Subject: [PATCH] fix lock --- admin.go | 2 +- api.go | 13 ++++++------- backup.go | 2 +- config.go | 28 +++++++++++++++++----------- version.go | 8 ++++---- 5 files changed, 29 insertions(+), 24 deletions(-) diff --git a/admin.go b/admin.go index e0182d9..20c5033 100644 --- a/admin.go +++ b/admin.go @@ -80,7 +80,7 @@ func (a *AdminConfig) Run() { }() c := cron.New(cron.WithLocation(time.UTC)) - if _, err := c.AddFunc("0 * * * *", func() { cfg.Run() }); err != nil { + if _, err := c.AddFunc("0 * * * *", func() { cfg.Run(true) }); err != nil { log.WithFields(log.Fields{"call": "cron.AddFunc", "error": err}).Errorf("") } c.Start() diff --git a/api.go b/api.go index 35f5f1a..59fc558 100644 --- a/api.go +++ b/api.go @@ -11,7 +11,7 @@ import ( ) func ApiRun(c *gin.Context) { - cfg.Run() + cfg.Run(true) c.JSON(http.StatusOK, gin.H{ "message": "done", }) @@ -118,7 +118,7 @@ func ApiRunApp(c *gin.Context) { } func ApiSave(c *gin.Context) { - if err := cfg.Save(); err != nil { + if err := cfg.Save(true); err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "message": "error", "error": err, @@ -131,7 +131,7 @@ func ApiSave(c *gin.Context) { } func ApiConfig(c *gin.Context) { - if b, err := cfg.Pretty(); err != nil { + if b, err := cfg.Pretty(true); err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "message": "error", "error": err, @@ -151,7 +151,7 @@ func ApiConfigApp(c *gin.Context) { for _, app := range cfg.Apps { if app.Name == name { found = true - if b, err := app.Pretty(); err != nil { + if b, err := app.Pretty(false); err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "message": "error", "error": err, @@ -220,7 +220,7 @@ func ApiAppAdd(c *gin.Context) { cfg.Apps = append(cfg.Apps, app) CfgUnlock() - err := cfg.Save() + err := cfg.Save(false) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "message": "error", @@ -262,8 +262,7 @@ func ApiAppDel(c *gin.Context) { return } - CfgUnlock() - err := cfg.Save() + err := cfg.Save(false) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "message": "error", diff --git a/backup.go b/backup.go index 5bf28a2..a324b48 100644 --- a/backup.go +++ b/backup.go @@ -59,7 +59,7 @@ func main() { } cfg.Admin.Run() } else { - cfg.Run() + cfg.Run(true) os.Exit(0) } diff --git a/config.go b/config.go index 62bce0d..fe49b61 100644 --- a/config.go +++ b/config.go @@ -203,12 +203,14 @@ func LoadConfigByte(conf []byte) (*Config, error) { } // Pretty config -func (c *Config) Pretty() ([]byte, error) { +func (c *Config) Pretty(lock bool) ([]byte, error) { log.WithFields(log.Fields{}).Debugf("starting") defer log.WithFields(log.Fields{}).Debugf("done") - CfgLock() - defer CfgUnlock() + if lock { + CfgLock() + defer CfgUnlock() + } b, err := json.Marshal(cfg) if err != nil { @@ -220,12 +222,14 @@ func (c *Config) Pretty() ([]byte, error) { } // Pretty App Config -func (a *AppConfig) Pretty() ([]byte, error) { +func (a *AppConfig) Pretty(lock bool) ([]byte, error) { log.WithFields(log.Fields{}).Debugf("starting") defer log.WithFields(log.Fields{}).Debugf("done") - CfgLock() - defer CfgUnlock() + if lock { + CfgLock() + defer CfgUnlock() + } b, err := json.Marshal(a) if err != nil { @@ -237,11 +241,11 @@ func (a *AppConfig) Pretty() ([]byte, error) { } // Save config -func (c *Config) Save() error { +func (c *Config) Save(lock bool) error { log.WithFields(log.Fields{}).Debugf("starting") defer log.WithFields(log.Fields{}).Debugf("done") - r, err := cfg.Pretty() + r, err := cfg.Pretty(lock) if err != nil { log.WithFields(log.Fields{"error": err, "call": "cfg.Pretty"}).Errorf("") return err @@ -263,7 +267,7 @@ func (c *Config) Save() error { } // Run config -func (c *Config) Run() { +func (c *Config) Run(lock bool) { log.WithFields(log.Fields{}).Debugf("starting") defer log.WithFields(log.Fields{}).Debugf("done") @@ -271,8 +275,10 @@ func (c *Config) Run() { return } - CfgLock() - defer CfgUnlock() + if lock { + CfgLock() + defer CfgUnlock() + } cfgRun = true defer func() { cfgRun = false }() diff --git a/version.go b/version.go index 9f217ba..c37a28e 100644 --- a/version.go +++ b/version.go @@ -1,7 +1,7 @@ // Code generated by version.sh (@generated) DO NOT EDIT. package main -var githash = "6a0c800" +var githash = "a1ed103" var branch = "master" -var buildstamp = "2025-12-28_15:20:20" -var commits = "120" -var version = "6a0c800-b120 - 2025-12-28_15:20:20" +var buildstamp = "2025-12-28_15:30:19" +var commits = "121" +var version = "a1ed103-b121 - 2025-12-28_15:30:19"