Skip to content

Commit e5aa483

Browse files
committed
feat(mysql): check-instance-info-file-mtime #14259
1 parent c8fead5 commit e5aa483

File tree

1 file changed

+32
-4
lines changed
  • dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/update_monitor_config

1 file changed

+32
-4
lines changed

dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/update_monitor_config/init.go

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2628
func (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+
4269
func (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

Comments
 (0)