PLT-7302: Aggregate Elasticsearch indexes over a certain age. (#7224)
* PLT-7302: Aggregate Elasticsearch indexes over a certain age. This is done by a scheduled daily job, in order to keep the shard count to a sensible level in Elasticsearch. * Use map[string]string instead of StringMap
Этот коммит содержится в:
коммит произвёл
Harrison Healey
родитель
4e92d18017
Коммит
22459ee17a
@@ -8,6 +8,7 @@ import (
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -123,11 +124,13 @@ const (
|
||||
ANNOUNCEMENT_SETTINGS_DEFAULT_BANNER_COLOR = "#f2a93b"
|
||||
ANNOUNCEMENT_SETTINGS_DEFAULT_BANNER_TEXT_COLOR = "#333333"
|
||||
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_CONNECTION_URL = ""
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_USERNAME = ""
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_PASSWORD = ""
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_POST_INDEX_REPLICAS = 1
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_POST_INDEX_SHARDS = 1
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_CONNECTION_URL = ""
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_USERNAME = ""
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_PASSWORD = ""
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_POST_INDEX_REPLICAS = 1
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_POST_INDEX_SHARDS = 1
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_AGGREGATE_POSTS_AFTER_DAYS = 365
|
||||
ELASTICSEARCH_SETTINGS_DEFAULT_POSTS_AGGREGATOR_JOB_START_TIME = "03:00"
|
||||
)
|
||||
|
||||
type ServiceSettings struct {
|
||||
@@ -441,14 +444,16 @@ type WebrtcSettings struct {
|
||||
}
|
||||
|
||||
type ElasticsearchSettings struct {
|
||||
ConnectionUrl *string
|
||||
Username *string
|
||||
Password *string
|
||||
EnableIndexing *bool
|
||||
EnableSearching *bool
|
||||
Sniff *bool
|
||||
PostIndexReplicas *int
|
||||
PostIndexShards *int
|
||||
ConnectionUrl *string
|
||||
Username *string
|
||||
Password *string
|
||||
EnableIndexing *bool
|
||||
EnableSearching *bool
|
||||
Sniff *bool
|
||||
PostIndexReplicas *int
|
||||
PostIndexShards *int
|
||||
AggregatePostsAfterDays *int
|
||||
PostsAggregatorJobStartTime *string
|
||||
}
|
||||
|
||||
type DataRetentionSettings struct {
|
||||
@@ -1452,6 +1457,16 @@ func (o *Config) SetDefaults() {
|
||||
*o.ElasticsearchSettings.PostIndexShards = ELASTICSEARCH_SETTINGS_DEFAULT_POST_INDEX_SHARDS
|
||||
}
|
||||
|
||||
if o.ElasticsearchSettings.AggregatePostsAfterDays == nil {
|
||||
o.ElasticsearchSettings.AggregatePostsAfterDays = new(int)
|
||||
*o.ElasticsearchSettings.AggregatePostsAfterDays = ELASTICSEARCH_SETTINGS_DEFAULT_AGGREGATE_POSTS_AFTER_DAYS
|
||||
}
|
||||
|
||||
if o.ElasticsearchSettings.PostsAggregatorJobStartTime == nil {
|
||||
o.ElasticsearchSettings.PostsAggregatorJobStartTime = new(string)
|
||||
*o.ElasticsearchSettings.PostsAggregatorJobStartTime = ELASTICSEARCH_SETTINGS_DEFAULT_POSTS_AGGREGATOR_JOB_START_TIME
|
||||
}
|
||||
|
||||
if o.DataRetentionSettings.Enable == nil {
|
||||
o.DataRetentionSettings.Enable = new(bool)
|
||||
*o.DataRetentionSettings.Enable = false
|
||||
@@ -1700,6 +1715,14 @@ func (o *Config) IsValid() *AppError {
|
||||
return NewLocAppError("Config.IsValid", "model.config.is_valid.elastic_search.enable_searching.app_error", nil, "")
|
||||
}
|
||||
|
||||
if *o.ElasticsearchSettings.AggregatePostsAfterDays < 1 {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.elastic_search.aggregate_posts_after_days.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if _, err := time.Parse("03:04", *o.ElasticsearchSettings.PostsAggregatorJobStartTime); err != nil {
|
||||
return NewAppError("Config.IsValid", "model.config.is_valid.elastic_search.posts_aggregator_job_start_time.app_error", nil, err.Error(), http.StatusBadRequest)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user