Skip to content

Commit 9365ea0

Browse files
committed
refactor: Simplify setting cache TTL management
- Removed the dynamic TTL function and standardized the cache TTL to a fixed duration for all settings. - Updated cache logic in Create, Update, Get, and GetValueByKey methods to use the new fixed TTL, enhancing code clarity and maintainability. - Added a new function to restart the core service after resetting settings, improving the reset command's functionality.
1 parent 024b05a commit 9365ea0

2 files changed

Lines changed: 39 additions & 21 deletions

File tree

core/app/repo/setting.go

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,8 @@ import (
1414
type SettingRepo struct{}
1515

1616
var (
17-
settingCache = cache.New(5*time.Minute, 10*time.Minute)
18-
settingDefaultTTL = 5 * time.Minute
19-
settingCriticalTTL = 5 * time.Second
17+
settingCache = cache.New(5*time.Minute, 10*time.Minute)
18+
settingTTL = 5 * time.Minute
2019
)
2120

2221
type ISettingRepo interface {
@@ -33,14 +32,6 @@ func NewISettingRepo() ISettingRepo {
3332
return &SettingRepo{}
3433
}
3534

36-
func loadSettingTTL(key string) time.Duration {
37-
switch key {
38-
case "AllowIPs", "BindDomain", "SSL":
39-
return settingCriticalTTL
40-
}
41-
return settingDefaultTTL
42-
}
43-
4435
func (u *SettingRepo) List(opts ...global.DBOption) ([]model.Setting, error) {
4536
var settings []model.Setting
4637
db := global.DB.Model(&model.Setting{})
@@ -59,7 +50,7 @@ func (u *SettingRepo) Create(key, value string) error {
5950
if err := global.DB.Create(setting).Error; err != nil {
6051
return err
6152
}
62-
settingCache.Set(key, value, loadSettingTTL(key))
53+
settingCache.Set(key, value, settingTTL)
6354
return nil
6455
}
6556

@@ -72,7 +63,7 @@ func (u *SettingRepo) Get(opts ...global.DBOption) (model.Setting, error) {
7263

7364
err := db.First(&settings).Error
7465
if err == nil && settings.Key != "" {
75-
settingCache.Set(settings.Key, settings.Value, loadSettingTTL(settings.Key))
66+
settingCache.Set(settings.Key, settings.Value, settingTTL)
7667
}
7768
return settings, err
7869
}
@@ -86,15 +77,15 @@ func (u *SettingRepo) GetValueByKey(key string) (string, error) {
8677
if err := global.DB.Model(&model.Setting{}).Where("key = ?", key).First(&setting).Error; err != nil {
8778
return "", err
8879
}
89-
settingCache.Set(key, setting.Value, loadSettingTTL(key))
80+
settingCache.Set(key, setting.Value, settingTTL)
9081
return setting.Value, nil
9182
}
9283

9384
func (u *SettingRepo) Update(key, value string) error {
9485
if err := global.DB.Model(&model.Setting{}).Where("key = ?", key).Updates(map[string]interface{}{"value": value}).Error; err != nil {
9586
return err
9687
}
97-
settingCache.Set(key, value, loadSettingTTL(key))
88+
settingCache.Set(key, value, settingTTL)
9889
return nil
9990
}
10091

@@ -106,15 +97,15 @@ func (u *SettingRepo) UpdateOrCreate(key, value string) error {
10697
if err := global.DB.Create(&model.Setting{Key: key, Value: value}).Error; err != nil {
10798
return err
10899
}
109-
settingCache.Set(key, value, loadSettingTTL(key))
100+
settingCache.Set(key, value, settingTTL)
110101
return nil
111102
}
112103
return result.Error
113104
}
114105
if err := global.DB.Model(&setting).UpdateColumn("value", value).Error; err != nil {
115106
return err
116107
}
117-
settingCache.Set(key, value, loadSettingTTL(key))
108+
settingCache.Set(key, value, settingTTL)
118109
return nil
119110
}
120111

@@ -125,6 +116,6 @@ func (u *SettingRepo) DefaultMenu() error {
125116
Update("value", menus).Error; err != nil {
126117
return err
127118
}
128-
settingCache.Set("HideMenu", menus, settingDefaultTTL)
119+
settingCache.Set("HideMenu", menus, settingTTL)
129120
return nil
130121
}

core/cmd/server/cmd/reset.go

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package cmd
22

33
import (
44
"fmt"
5+
"strings"
56

67
"github.com/1Panel-dev/1Panel/core/constant"
78
"github.com/1Panel-dev/1Panel/core/i18n"
9+
cmdUtils "github.com/1Panel-dev/1Panel/core/utils/cmd"
810
"github.com/1Panel-dev/1Panel/core/utils/passkey"
911
"github.com/spf13/cobra"
1012
)
@@ -62,7 +64,10 @@ var resetSSLCmd = &cobra.Command{
6264
return err
6365
}
6466

65-
return setSettingByKey(db, "SSL", constant.StatusDisable)
67+
if err := setSettingByKey(db, "SSL", constant.StatusDisable); err != nil {
68+
return err
69+
}
70+
return restartCoreAfterReset()
6671
},
6772
}
6873
var resetEntranceCmd = &cobra.Command{
@@ -94,7 +99,10 @@ var resetBindIpsCmd = &cobra.Command{
9499
return err
95100
}
96101

97-
return setSettingByKey(db, "AllowIPs", "")
102+
if err := setSettingByKey(db, "AllowIPs", ""); err != nil {
103+
return err
104+
}
105+
return restartCoreAfterReset()
98106
},
99107
}
100108
var resetDomainCmd = &cobra.Command{
@@ -110,7 +118,10 @@ var resetDomainCmd = &cobra.Command{
110118
return err
111119
}
112120

113-
return setSettingByKey(db, "BindDomain", "")
121+
if err := setSettingByKey(db, "BindDomain", ""); err != nil {
122+
return err
123+
}
124+
return restartCoreAfterReset()
114125
},
115126
}
116127

@@ -133,6 +144,22 @@ var resetPasskeyCmd = &cobra.Command{
133144
},
134145
}
135146

147+
func restartCoreAfterReset() error {
148+
stdout, err := cmdUtils.RunDefaultWithStdoutBashC("1pctl restart core")
149+
if len(stdout) != 0 {
150+
fmt.Print(stdout)
151+
}
152+
if err == nil {
153+
return nil
154+
}
155+
156+
stdout = strings.TrimSpace(stdout)
157+
if len(stdout) != 0 {
158+
return fmt.Errorf("reset succeeded but restart core failed: %s", stdout)
159+
}
160+
return fmt.Errorf("reset succeeded but restart core failed: %v", err)
161+
}
162+
136163
func loadResetHelper() {
137164
fmt.Println(i18n.GetMsgByKeyForCmd("ResetCommands"))
138165
fmt.Println("\nUsage:\n 1panel reset [command]\n\nAvailable Commands:")

0 commit comments

Comments
 (0)