Revert "[MM-46579] Add a limit for preferences" (#22086)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
6b6150d374
Коммит
1fdedf30f1
@@ -33,8 +33,7 @@ func (w *preferencesServiceWrapper) DeletePreferencesForUser(userID string, pref
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) GetPreferencesForUser(userID string) (model.Preferences, *model.AppError) {
|
func (a *App) GetPreferencesForUser(userID string) (model.Preferences, *model.AppError) {
|
||||||
limit := *a.Config().ServiceSettings.ExperimentalMaxUserPreferences
|
preferences, err := a.Srv().Store().Preference().GetAll(userID)
|
||||||
preferences, err := a.Srv().Store().Preference().GetAll(userID, limit)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, model.NewAppError("GetPreferencesForUser", "app.preference.get_all.app_error", nil, "", http.StatusBadRequest).Wrap(err)
|
return nil, model.NewAppError("GetPreferencesForUser", "app.preference.get_all.app_error", nil, "", http.StatusBadRequest).Wrap(err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -385,7 +385,6 @@ type ServiceSettings struct {
|
|||||||
EnableCustomGroups *bool `access:"site_users_and_teams"`
|
EnableCustomGroups *bool `access:"site_users_and_teams"`
|
||||||
SelfHostedPurchase *bool `access:"write_restrictable,cloud_restrictable"`
|
SelfHostedPurchase *bool `access:"write_restrictable,cloud_restrictable"`
|
||||||
AllowSyncedDrafts *bool `access:"site_posts"`
|
AllowSyncedDrafts *bool `access:"site_posts"`
|
||||||
ExperimentalMaxUserPreferences *int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *ServiceSettings) SetDefaults(isUpdate bool) {
|
func (s *ServiceSettings) SetDefaults(isUpdate bool) {
|
||||||
@@ -858,10 +857,6 @@ func (s *ServiceSettings) SetDefaults(isUpdate bool) {
|
|||||||
if s.SelfHostedPurchase == nil {
|
if s.SelfHostedPurchase == nil {
|
||||||
s.SelfHostedPurchase = NewBool(true)
|
s.SelfHostedPurchase = NewBool(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.ExperimentalMaxUserPreferences == nil {
|
|
||||||
s.ExperimentalMaxUserPreferences = NewInt(1000)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type ClusterSettings struct {
|
type ClusterSettings struct {
|
||||||
|
|||||||
@@ -460,7 +460,6 @@ func (ts *TelemetryService) trackConfig() {
|
|||||||
"post_priority": *cfg.ServiceSettings.PostPriority,
|
"post_priority": *cfg.ServiceSettings.PostPriority,
|
||||||
"self_hosted_purchase": *cfg.ServiceSettings.SelfHostedPurchase,
|
"self_hosted_purchase": *cfg.ServiceSettings.SelfHostedPurchase,
|
||||||
"allow_synced_drafts": *cfg.ServiceSettings.AllowSyncedDrafts,
|
"allow_synced_drafts": *cfg.ServiceSettings.AllowSyncedDrafts,
|
||||||
"experimental_max_user_preferences": *cfg.ServiceSettings.ExperimentalMaxUserPreferences,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
ts.SendTelemetry(TrackConfigTeam, map[string]any{
|
ts.SendTelemetry(TrackConfigTeam, map[string]any{
|
||||||
|
|||||||
@@ -6919,7 +6919,7 @@ func (s *OpenTracingLayerPreferenceStore) Get(userID string, category string, na
|
|||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *OpenTracingLayerPreferenceStore) GetAll(userID string, limit int) (model.Preferences, error) {
|
func (s *OpenTracingLayerPreferenceStore) GetAll(userID string) (model.Preferences, error) {
|
||||||
origCtx := s.Root.Store.Context()
|
origCtx := s.Root.Store.Context()
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PreferenceStore.GetAll")
|
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PreferenceStore.GetAll")
|
||||||
s.Root.Store.SetContext(newCtx)
|
s.Root.Store.SetContext(newCtx)
|
||||||
@@ -6928,7 +6928,7 @@ func (s *OpenTracingLayerPreferenceStore) GetAll(userID string, limit int) (mode
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
result, err := s.PreferenceStore.GetAll(userID, limit)
|
result, err := s.PreferenceStore.GetAll(userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
span.LogFields(spanlog.Error(err))
|
span.LogFields(spanlog.Error(err))
|
||||||
ext.Error.Set(span, true)
|
ext.Error.Set(span, true)
|
||||||
|
|||||||
@@ -7845,11 +7845,11 @@ func (s *RetryLayerPreferenceStore) Get(userID string, category string, name str
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *RetryLayerPreferenceStore) GetAll(userID string, limit int) (model.Preferences, error) {
|
func (s *RetryLayerPreferenceStore) GetAll(userID string) (model.Preferences, error) {
|
||||||
|
|
||||||
tries := 0
|
tries := 0
|
||||||
for {
|
for {
|
||||||
result, err := s.PreferenceStore.GetAll(userID, limit)
|
result, err := s.PreferenceStore.GetAll(userID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,22 +175,17 @@ func (s SqlPreferenceStore) GetCategory(userId string, category string) (model.P
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s SqlPreferenceStore) GetAll(userId string, limit int) (model.Preferences, error) {
|
func (s SqlPreferenceStore) GetAll(userId string) (model.Preferences, error) {
|
||||||
query := s.getQueryBuilder().
|
var preferences model.Preferences
|
||||||
|
query, args, err := s.getQueryBuilder().
|
||||||
Select("*").
|
Select("*").
|
||||||
From("Preferences").
|
From("Preferences").
|
||||||
Where(sq.Eq{"UserId": userId})
|
Where(sq.Eq{"UserId": userId}).
|
||||||
if limit > 0 {
|
ToSql()
|
||||||
query = query.Limit(uint64(limit))
|
|
||||||
}
|
|
||||||
|
|
||||||
queryString, args, err := query.ToSql()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "could not build sql query to get preference")
|
return nil, errors.Wrap(err, "could not build sql query to get preference")
|
||||||
}
|
}
|
||||||
|
if err = s.GetReplicaX().Select(&preferences, query, args...); err != nil {
|
||||||
var preferences model.Preferences
|
|
||||||
if err = s.GetReplicaX().Select(&preferences, queryString, args...); err != nil {
|
|
||||||
return nil, errors.Wrapf(err, "failed to find Preference with userId=%s", userId)
|
return nil, errors.Wrapf(err, "failed to find Preference with userId=%s", userId)
|
||||||
}
|
}
|
||||||
return preferences, nil
|
return preferences, nil
|
||||||
|
|||||||
@@ -641,7 +641,7 @@ type PreferenceStore interface {
|
|||||||
GetCategory(userID string, category string) (model.Preferences, error)
|
GetCategory(userID string, category string) (model.Preferences, error)
|
||||||
GetCategoryAndName(category string, nane string) (model.Preferences, error)
|
GetCategoryAndName(category string, nane string) (model.Preferences, error)
|
||||||
Get(userID string, category string, name string) (*model.Preference, error)
|
Get(userID string, category string, name string) (*model.Preference, error)
|
||||||
GetAll(userID string, limit int) (model.Preferences, error)
|
GetAll(userID string) (model.Preferences, error)
|
||||||
Delete(userID, category, name string) error
|
Delete(userID, category, name string) error
|
||||||
DeleteCategory(userID string, category string) error
|
DeleteCategory(userID string, category string) error
|
||||||
DeleteCategoryAndName(category string, name string) error
|
DeleteCategoryAndName(category string, name string) error
|
||||||
|
|||||||
@@ -121,13 +121,13 @@ func (_m *PreferenceStore) Get(userID string, category string, name string) (*mo
|
|||||||
return r0, r1
|
return r0, r1
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAll provides a mock function with given fields: userID, limit
|
// GetAll provides a mock function with given fields: userID
|
||||||
func (_m *PreferenceStore) GetAll(userID string, limit int) (model.Preferences, error) {
|
func (_m *PreferenceStore) GetAll(userID string) (model.Preferences, error) {
|
||||||
ret := _m.Called(userID, limit)
|
ret := _m.Called(userID)
|
||||||
|
|
||||||
var r0 model.Preferences
|
var r0 model.Preferences
|
||||||
if rf, ok := ret.Get(0).(func(string, int) model.Preferences); ok {
|
if rf, ok := ret.Get(0).(func(string) model.Preferences); ok {
|
||||||
r0 = rf(userID, limit)
|
r0 = rf(userID)
|
||||||
} else {
|
} else {
|
||||||
if ret.Get(0) != nil {
|
if ret.Get(0) != nil {
|
||||||
r0 = ret.Get(0).(model.Preferences)
|
r0 = ret.Get(0).(model.Preferences)
|
||||||
@@ -135,8 +135,8 @@ func (_m *PreferenceStore) GetAll(userID string, limit int) (model.Preferences,
|
|||||||
}
|
}
|
||||||
|
|
||||||
var r1 error
|
var r1 error
|
||||||
if rf, ok := ret.Get(1).(func(string, int) error); ok {
|
if rf, ok := ret.Get(1).(func(string) error); ok {
|
||||||
r1 = rf(userID, limit)
|
r1 = rf(userID)
|
||||||
} else {
|
} else {
|
||||||
r1 = ret.Error(1)
|
r1 = ret.Error(1)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ func testPreferenceGetAll(t *testing.T, ss store.Store) {
|
|||||||
err := ss.Preference().Save(preferences)
|
err := ss.Preference().Save(preferences)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
result, err := ss.Preference().GetAll(userId, 0)
|
result, err := ss.Preference().GetAll(userId)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, 3, len(result), "got the wrong number of preferences")
|
require.Equal(t, 3, len(result), "got the wrong number of preferences")
|
||||||
|
|
||||||
@@ -243,13 +243,13 @@ func testPreferenceDelete(t *testing.T, ss store.Store) {
|
|||||||
err := ss.Preference().Save(model.Preferences{preference})
|
err := ss.Preference().Save(model.Preferences{preference})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
preferences, err := ss.Preference().GetAll(preference.UserId, 0)
|
preferences, err := ss.Preference().GetAll(preference.UserId)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Len(t, preferences, 1, "should've returned 1 preference")
|
assert.Len(t, preferences, 1, "should've returned 1 preference")
|
||||||
|
|
||||||
err = ss.Preference().Delete(preference.UserId, preference.Category, preference.Name)
|
err = ss.Preference().Delete(preference.UserId, preference.Category, preference.Name)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
preferences, err = ss.Preference().GetAll(preference.UserId, 0)
|
preferences, err = ss.Preference().GetAll(preference.UserId)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Empty(t, preferences, "should've returned no preferences")
|
assert.Empty(t, preferences, "should've returned no preferences")
|
||||||
}
|
}
|
||||||
@@ -275,14 +275,14 @@ func testPreferenceDeleteCategory(t *testing.T, ss store.Store) {
|
|||||||
err := ss.Preference().Save(model.Preferences{preference1, preference2})
|
err := ss.Preference().Save(model.Preferences{preference1, preference2})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
preferences, err := ss.Preference().GetAll(userId, 0)
|
preferences, err := ss.Preference().GetAll(userId)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Len(t, preferences, 2, "should've returned 2 preferences")
|
assert.Len(t, preferences, 2, "should've returned 2 preferences")
|
||||||
|
|
||||||
err = ss.Preference().DeleteCategory(userId, category)
|
err = ss.Preference().DeleteCategory(userId, category)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
preferences, err = ss.Preference().GetAll(userId, 0)
|
preferences, err = ss.Preference().GetAll(userId)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Empty(t, preferences, "should've returned no preferences")
|
assert.Empty(t, preferences, "should've returned no preferences")
|
||||||
}
|
}
|
||||||
@@ -310,22 +310,22 @@ func testPreferenceDeleteCategoryAndName(t *testing.T, ss store.Store) {
|
|||||||
err := ss.Preference().Save(model.Preferences{preference1, preference2})
|
err := ss.Preference().Save(model.Preferences{preference1, preference2})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
preferences, err := ss.Preference().GetAll(userId, 0)
|
preferences, err := ss.Preference().GetAll(userId)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Len(t, preferences, 1, "should've returned 1 preference")
|
assert.Len(t, preferences, 1, "should've returned 1 preference")
|
||||||
|
|
||||||
preferences, err = ss.Preference().GetAll(userId2, 0)
|
preferences, err = ss.Preference().GetAll(userId2)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Len(t, preferences, 1, "should've returned 1 preference")
|
assert.Len(t, preferences, 1, "should've returned 1 preference")
|
||||||
|
|
||||||
err = ss.Preference().DeleteCategoryAndName(category, name)
|
err = ss.Preference().DeleteCategoryAndName(category, name)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
preferences, err = ss.Preference().GetAll(userId, 0)
|
preferences, err = ss.Preference().GetAll(userId)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Empty(t, preferences, "should've returned no preference")
|
assert.Empty(t, preferences, "should've returned no preference")
|
||||||
|
|
||||||
preferences, err = ss.Preference().GetAll(userId2, 0)
|
preferences, err = ss.Preference().GetAll(userId2)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Empty(t, preferences, "should've returned no preference")
|
assert.Empty(t, preferences, "should've returned no preference")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6256,10 +6256,10 @@ func (s *TimerLayerPreferenceStore) Get(userID string, category string, name str
|
|||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *TimerLayerPreferenceStore) GetAll(userID string, limit int) (model.Preferences, error) {
|
func (s *TimerLayerPreferenceStore) GetAll(userID string) (model.Preferences, error) {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
|
||||||
result, err := s.PreferenceStore.GetAll(userID, limit)
|
result, err := s.PreferenceStore.GetAll(userID)
|
||||||
|
|
||||||
elapsed := float64(time.Since(start)) / float64(time.Second)
|
elapsed := float64(time.Since(start)) / float64(time.Second)
|
||||||
if s.Root.Metrics != nil {
|
if s.Root.Metrics != nil {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user