MM-56876: Redis: first introduction (#27752)
```release-note NONE ``` --------- Co-authored-by: Jesús Espino <jespinog@gmail.com> Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
c3ed07e679
Коммит
540febd866
@@ -6,6 +6,7 @@ package model
|
||||
type ClusterEvent string
|
||||
|
||||
const (
|
||||
ClusterEventNone ClusterEvent = "none"
|
||||
ClusterEventPublish ClusterEvent = "publish"
|
||||
ClusterEventUpdateStatus ClusterEvent = "update_status"
|
||||
ClusterEventInvalidateAllCaches ClusterEvent = "inv_all_caches"
|
||||
|
||||
@@ -98,6 +98,9 @@ const (
|
||||
EmailSMTPDefaultServer = "localhost"
|
||||
EmailSMTPDefaultPort = "10025"
|
||||
|
||||
CacheTypeLRU = "lru"
|
||||
CacheTypeRedis = "redis"
|
||||
|
||||
SitenameMaxLength = 30
|
||||
|
||||
ServiceSettingsDefaultSiteURL = "http://localhost:8065"
|
||||
@@ -929,6 +932,47 @@ func (s *ServiceSettings) SetDefaults(isUpdate bool) {
|
||||
}
|
||||
}
|
||||
|
||||
type CacheSettings struct {
|
||||
CacheType *string `access:",write_restrictable,cloud_restrictable"`
|
||||
RedisAddress *string `access:",write_restrictable,cloud_restrictable"` // telemetry: none
|
||||
RedisPassword *string `access:",write_restrictable,cloud_restrictable"` // telemetry: none
|
||||
RedisDB *int `access:",write_restrictable,cloud_restrictable"` // telemetry: none
|
||||
}
|
||||
|
||||
func (s *CacheSettings) SetDefaults() {
|
||||
if s.CacheType == nil {
|
||||
s.CacheType = NewString(CacheTypeLRU)
|
||||
}
|
||||
|
||||
if s.RedisAddress == nil {
|
||||
s.RedisAddress = NewString("")
|
||||
}
|
||||
|
||||
if s.RedisPassword == nil {
|
||||
s.RedisPassword = NewString("")
|
||||
}
|
||||
|
||||
if s.RedisDB == nil {
|
||||
s.RedisDB = NewInt(-1)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *CacheSettings) isValid() *AppError {
|
||||
if *s.CacheType != CacheTypeLRU && *s.CacheType != CacheTypeRedis {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.cache_type.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if *s.CacheType == CacheTypeRedis && *s.RedisAddress == "" {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.empty_redis_address.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if *s.CacheType == CacheTypeRedis && *s.RedisDB < 0 {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.invalid_redis_db.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
type ClusterSettings struct {
|
||||
Enable *bool `access:"environment_high_availability,write_restrictable"`
|
||||
ClusterName *string `access:"environment_high_availability,write_restrictable,cloud_restrictable"` // telemetry: none
|
||||
@@ -3496,6 +3540,7 @@ type Config struct {
|
||||
LocalizationSettings LocalizationSettings
|
||||
SamlSettings SamlSettings
|
||||
NativeAppSettings NativeAppSettings
|
||||
CacheSettings CacheSettings
|
||||
ClusterSettings ClusterSettings
|
||||
MetricsSettings MetricsSettings
|
||||
ExperimentalSettings ExperimentalSettings
|
||||
@@ -3603,6 +3648,7 @@ func (o *Config) SetDefaults() {
|
||||
o.SupportSettings.SetDefaults()
|
||||
o.AnnouncementSettings.SetDefaults()
|
||||
o.ThemeSettings.SetDefaults()
|
||||
o.CacheSettings.SetDefaults()
|
||||
o.ClusterSettings.SetDefaults()
|
||||
o.PluginSettings.SetDefaults(o.LogSettings)
|
||||
o.AnalyticsSettings.SetDefaults()
|
||||
@@ -3640,6 +3686,10 @@ func (o *Config) IsValid() *AppError {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.cluster_email_batching.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if appErr := o.CacheSettings.isValid(); appErr != nil {
|
||||
return appErr
|
||||
}
|
||||
|
||||
if *o.ServiceSettings.SiteURL == "" && *o.ServiceSettings.AllowCookiesForSubdomains {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.allow_cookies_for_subdomains.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user