From 43627f66492d691be9aa00f2a874e3235416d1c6 Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Mon, 13 Jul 2026 11:43:51 +0200 Subject: [PATCH] Config: persist settings immediately on site update (#31754) --- cmd/setup.go | 2 +- server/http_config_site_handler.go | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cmd/setup.go b/cmd/setup.go index 4cedbf4b5..6f2a4916b 100644 --- a/cmd/setup.go +++ b/cmd/setup.go @@ -669,7 +669,7 @@ func configureDatabase(conf globalconfig.DB) error { // persist unsaved settings on shutdown shutdown.Register(persistSettings) - // persist unsaved settings every 30 minutes + // persist unsaved settings every minute go func() { for range time.Tick(time.Minute) { persistSettings() diff --git a/server/http_config_site_handler.go b/server/http_config_site_handler.go index aa4d42732..fb3f0d5ad 100644 --- a/server/http_config_site_handler.go +++ b/server/http_config_site_handler.go @@ -4,6 +4,7 @@ import ( "net/http" "github.com/evcc-io/evcc/core/site" + "github.com/evcc-io/evcc/server/db/settings" "github.com/evcc-io/evcc/util/config" ) @@ -118,6 +119,12 @@ func updateSiteHandler(site site.API) http.HandlerFunc { setConfigDirty() } + // persist immediately to keep meter refs consistent with device config on unclean shutdown + if err := settings.Persist(); err != nil { + jsonError(w, http.StatusInternalServerError, err) + return + } + status := map[bool]int{false: http.StatusOK, true: http.StatusAccepted} w.WriteHeader(status[ConfigDirty()]) }