From b621182ce4330992f101d59a49871f00ddd17b84 Mon Sep 17 00:00:00 2001 From: samosvalishe Date: Mon, 21 Sep 2026 13:43:01 +0300 Subject: [PATCH] =?UTF-8?q?fix(clients):=20=D0=BE=D1=81=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B8=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=80=D1=8F=D1=87=D1=83=D1=8E=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D1=83=20=D0=B1=D0=B0=D0=B7?= =?UTF-8?q?=D1=8B=20=D0=BF=D0=BE=20=D0=BA=D0=BE=D0=BD=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/server/main.go | 2 +- internal/clientsdb/db.go | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cmd/server/main.go b/cmd/server/main.go index da1f523..edea1e6 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -110,7 +110,7 @@ func main() { logger.Errorf("Failed to open clients-file: %v", err) os.Exit(1) } - d.StartHotReload(10 * time.Second) + d.StartHotReload(ctx, 10*time.Second) db = d logger.Infof("Client ID authorization enabled via %s", cfg.ClientsFile) } diff --git a/internal/clientsdb/db.go b/internal/clientsdb/db.go index 49bf3fc..00477da 100644 --- a/internal/clientsdb/db.go +++ b/internal/clientsdb/db.go @@ -1,6 +1,7 @@ package clientsdb import ( + "context" "encoding/json" "fmt" "io" @@ -41,12 +42,17 @@ func New(path string) (*DB, error) { return db, nil } -func (db *DB) StartHotReload(interval time.Duration) { +func (db *DB) StartHotReload(ctx context.Context, interval time.Duration) { go func() { ticker := time.NewTicker(interval) defer ticker.Stop() - for range ticker.C { - db.loadIfModified() + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + db.loadIfModified() + } } }() }