@@ -6,12 +6,14 @@ import (
66 acst "dbm-services/mysql/db-tools/dbactuator/pkg/core/cst"
77 "dbm-services/mysql/db-tools/mysql-monitor/pkg/config"
88 "encoding/json"
9+ "errors"
910 "fmt"
1011 "io"
1112 "log/slog"
1213 "os"
1314 "path/filepath"
1415 "slices"
16+ "time"
1517
1618 "github.com/gofrs/flock"
1719 "github.com/spf13/viper"
@@ -24,6 +26,12 @@ type Checker struct {
2426}
2527
2628func (c * Checker ) Run () (msg string , err error ) {
29+ err = checkOutOfDate ()
30+ if err != nil {
31+ slog .Error ("check out of date" , slog .String ("err" , err .Error ()))
32+ return "" , err
33+ }
34+
2735 sii , err := c .getSelfInfo ()
2836 if err != nil {
2937 slog .Error ("get self info failed" , slog .String ("err" , err .Error ()))
@@ -39,6 +47,25 @@ func (c *Checker) Run() (msg string, err error) {
3947 return "" , nil
4048}
4149
50+ func checkOutOfDate () (err error ) {
51+ for _ , fn := range []string {
52+ define .DefaultInstanceInfoFileName ,
53+ define .DefaultNginxProxyAddrsFileName ,
54+ } {
55+ fp := filepath .Join (define .DefaultCommonConfigDir , fn )
56+ st , e := os .Stat (fp )
57+ if e != nil {
58+ errors .Join (err , e )
59+ }
60+
61+ mtime := st .ModTime ()
62+ if mtime .Before (time .Now ().Add (- 24 * time .Hour )) {
63+ errors .Join (err , fmt .Errorf ("%s is out of date" , fn ))
64+ }
65+ }
66+ return
67+ }
68+
4269func (c * Checker ) updateConfigFile (sii * mysql.StorageInstanceInfo ) (err error ) {
4370 configFilePath := viper .GetString ("hard-run-config" )
4471 if ! filepath .IsAbs (configFilePath ) {
@@ -87,7 +114,6 @@ func (c *Checker) updateConfigFile(sii *mysql.StorageInstanceInfo) (err error) {
87114 slog .Info (name , slog .Any ("monitor config before" , config .MonitorConfig ))
88115 config .MonitorConfig .Role = & sii .InstanceInnerRole
89116 slog .Info (name , slog .Any ("monitor config after" , config .MonitorConfig ))
90- //config.MonitorConfig.ImmuteDomain = sii.ImmuteDomain
91117
92118 b , err := yaml .Marshal (config .MonitorConfig )
93119 if err != nil {
@@ -148,9 +174,11 @@ func (c *Checker) getSelfInfo() (sii *mysql.StorageInstanceInfo, err error) {
148174 return nil , err
149175 }
150176
151- idx := slices .IndexFunc (siis , func (ele mysql.StorageInstanceInfo ) bool {
152- return ele .Ip == config .MonitorConfig .Ip && ele .Port == config .MonitorConfig .Port
153- })
177+ idx := slices .IndexFunc (
178+ siis , func (ele mysql.StorageInstanceInfo ) bool {
179+ return ele .Ip == config .MonitorConfig .Ip && ele .Port == config .MonitorConfig .Port
180+ },
181+ )
154182 if idx < 0 {
155183 err := fmt .Errorf ("can't find %s:%d in %v" , config .MonitorConfig .Ip , config .MonitorConfig .Port , siis )
156184 slog .Error (
0 commit comments