SystemStore migration to return plain errors (#14835)

* SystemStore migration to return plain errors

* Fix nilness

* Fix translations

* Fix merge

* Fix layers

* Fix merge errors

* Lint: remove unnecessary use of sprint

* Fix merge errors

* Fix i18n

Co-authored-by: Agniva De Sarker <agnivade@yahoo.co.in>
Этот коммит содержится в:
Rodrigo Villablanca
2020-08-13 11:02:57 -04:00
коммит произвёл GitHub
родитель e8d431ee7c
Коммит 20e44399c7
18 изменённых файлов: 252 добавлений и 173 удалений

Просмотреть файл

@@ -154,9 +154,9 @@ func (a *App) Handle404(w http.ResponseWriter, r *http.Request) {
}
func (s *Server) getSystemInstallDate() (int64, *model.AppError) {
systemData, appErr := s.Store.System().GetByName(model.SYSTEM_INSTALLATION_DATE_KEY)
if appErr != nil {
return 0, appErr
systemData, err := s.Store.System().GetByName(model.SYSTEM_INSTALLATION_DATE_KEY)
if err != nil {
return 0, model.NewAppError("getSystemInstallDate", "app.system.get_by_name.app_error", nil, err.Error(), http.StatusInternalServerError)
}
value, err := strconv.ParseInt(systemData.Value, 10, 64)
if err != nil {
@@ -166,9 +166,9 @@ func (s *Server) getSystemInstallDate() (int64, *model.AppError) {
}
func (s *Server) getFirstServerRunTimestamp() (int64, *model.AppError) {
systemData, appErr := s.Store.System().GetByName(model.SYSTEM_FIRST_SERVER_RUN_TIMESTAMP_KEY)
if appErr != nil {
return 0, appErr
systemData, err := s.Store.System().GetByName(model.SYSTEM_FIRST_SERVER_RUN_TIMESTAMP_KEY)
if err != nil {
return 0, model.NewAppError("getFirstServerRunTimestamp", "app.system.get_by_name.app_error", nil, err.Error(), http.StatusInternalServerError)
}
value, err := strconv.ParseInt(systemData.Value, 10, 64)
if err != nil {
@@ -178,9 +178,9 @@ func (s *Server) getFirstServerRunTimestamp() (int64, *model.AppError) {
}
func (a *App) GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError) {
systemDataList, appErr := a.Srv().Store.System().Get()
if appErr != nil {
return nil, appErr
systemDataList, nErr := a.Srv().Store.System().Get()
if nErr != nil {
return nil, model.NewAppError("GetWarnMetricsStatus", "app.system.get.app_error", nil, nErr.Error(), http.StatusInternalServerError)
}
result := map[string]*model.WarnMetricStatus{}
@@ -345,8 +345,8 @@ func (a *App) notifyAdminsOfWarnMetricStatus(warnMetricId string) *model.AppErro
func (a *App) NotifyAndSetWarnMetricAck(warnMetricId string, sender *model.User, forceAck bool, isBot bool) *model.AppError {
if warnMetric, ok := model.WarnMetricsTable[warnMetricId]; ok {
data, err := a.Srv().Store.System().GetByName(warnMetric.Id)
if err == nil && data != nil && data.Value == model.WARN_METRIC_STATUS_ACK {
data, nErr := a.Srv().Store.System().GetByName(warnMetric.Id)
if nErr == nil && data != nil && data.Value == model.WARN_METRIC_STATUS_ACK {
mlog.Debug("This metric warning has already been acknowledged")
return nil
}
@@ -384,14 +384,14 @@ func (a *App) NotifyAndSetWarnMetricAck(warnMetricId string, sender *model.User,
subject := T("api.templates.warn_metric_ack.subject")
bodyPage.Props["Title"] = warnMetricDisplayTexts.EmailBody
if err = mailservice.SendMailUsingConfig(model.MM_SUPPORT_ADDRESS, subject, bodyPage.Render(), a.Config(), false, sender.Email); err != nil {
if err := mailservice.SendMailUsingConfig(model.MM_SUPPORT_ADDRESS, subject, bodyPage.Render(), a.Config(), false, sender.Email); err != nil {
mlog.Error("Error while sending email", mlog.String("destination email", model.MM_SUPPORT_ADDRESS), mlog.Err(err))
return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.failure.app_error", map[string]interface{}{"Error": err.Error()}, "", http.StatusInternalServerError)
}
}
mlog.Debug("Disable the monitoring of all warn metrics")
err = a.setWarnMetricsStatus(model.WARN_METRIC_STATUS_ACK)
err := a.setWarnMetricsStatus(model.WARN_METRIC_STATUS_ACK)
if err != nil {
return err
}

Просмотреть файл

@@ -139,8 +139,8 @@ func (s *Server) ensurePostActionCookieSecret() error {
}
system.Value = string(v)
// If we were able to save the key, use it, otherwise log the error.
if appErr := s.Store.System().Save(system); appErr != nil {
mlog.Error("Failed to save PostActionCookieSecret", mlog.Err(appErr))
if err = s.Store.System().Save(system); err != nil {
mlog.Error("Failed to save PostActionCookieSecret", mlog.Err(err))
} else {
secret = newSecret
}
@@ -202,8 +202,8 @@ func (s *Server) ensureAsymmetricSigningKey() error {
}
system.Value = string(v)
// If we were able to save the key, use it, otherwise log the error.
if appErr := s.Store.System().Save(system); appErr != nil {
mlog.Error("Failed to save AsymmetricSigningKey", mlog.Err(appErr))
if err = s.Store.System().Save(system); err != nil {
mlog.Error("Failed to save AsymmetricSigningKey", mlog.Err(err))
} else {
key = newKey
}
@@ -242,40 +242,38 @@ func (s *Server) ensureAsymmetricSigningKey() error {
}
func (s *Server) ensureInstallationDate() error {
_, err := s.getSystemInstallDate()
if err == nil {
_, appErr := s.getSystemInstallDate()
if appErr == nil {
return nil
}
installDate, err := s.Store.User().InferSystemInstallDate()
installDate, appErr := s.Store.User().InferSystemInstallDate()
var installationDate int64
if err == nil && installDate > 0 {
if appErr == nil && installDate > 0 {
installationDate = installDate
} else {
installationDate = utils.MillisFromTime(time.Now())
}
err = s.Store.System().SaveOrUpdate(&model.System{
if err := s.Store.System().SaveOrUpdate(&model.System{
Name: model.SYSTEM_INSTALLATION_DATE_KEY,
Value: strconv.FormatInt(installationDate, 10),
})
if err != nil {
}); err != nil {
return err
}
return nil
}
func (s *Server) ensureFirstServerRunTimestamp() error {
_, err := s.getFirstServerRunTimestamp()
if err == nil {
_, appErr := s.getFirstServerRunTimestamp()
if appErr == nil {
return nil
}
err = s.Store.System().SaveOrUpdate(&model.System{
if err := s.Store.System().SaveOrUpdate(&model.System{
Name: model.SYSTEM_FIRST_SERVER_RUN_TIMESTAMP_KEY,
Value: strconv.FormatInt(utils.MillisFromTime(time.Now()), 10),
})
if err != nil {
}); err != nil {
return err
}
return nil

Просмотреть файл

@@ -1043,8 +1043,8 @@ func (s *Server) trackChannelModeration() {
}
func (s *Server) trackWarnMetrics() {
systemDataList, appErr := s.Store.System().Get()
if appErr != nil {
systemDataList, nErr := s.Store.System().Get()
if nErr != nil {
return
}
for key, value := range systemDataList {

Просмотреть файл

@@ -31,8 +31,8 @@ func (s *Server) LoadLicense() {
}
licenseId := ""
props, err := s.Store.System().Get()
if err == nil {
props, nErr := s.Store.System().Get()
if nErr == nil {
licenseId = props[model.SYSTEM_ACTIVE_LICENSE_ID]
}
@@ -41,7 +41,7 @@ func (s *Server) LoadLicense() {
license, licenseBytes := utils.GetAndValidateLicenseFileFromDisk(*s.Config().ServiceSettings.LicenseFileLocation)
if license != nil {
if _, err = s.SaveLicense(licenseBytes); err != nil {
if _, err := s.SaveLicense(licenseBytes); err != nil {
mlog.Info("Failed to save license key loaded from disk.", mlog.Err(err))
} else {
licenseId = license.Id
@@ -184,7 +184,7 @@ func (s *Server) RemoveLicense() *model.AppError {
sysVar.Value = ""
if err := s.Store.System().SaveOrUpdate(sysVar); err != nil {
return err
return model.NewAppError("RemoveLicense", "app.system.save.app_error", nil, err.Error(), http.StatusInternalServerError)
}
s.SetLicense(nil)

Просмотреть файл

@@ -55,17 +55,17 @@ func (a *App) ResetPermissionsSystem() *model.AppError {
// Remove the "System" table entry that marks the advanced permissions migration as done.
if _, err := a.Srv().Store.System().PermanentDeleteByName(ADVANCED_PERMISSIONS_MIGRATION_KEY); err != nil {
return err
return model.NewAppError("ResetPermissionSystem", "app.system.permanent_delete_by_name.app_error", nil, err.Error(), http.StatusInternalServerError)
}
// Remove the "System" table entry that marks the emoji permissions migration as done.
if _, err := a.Srv().Store.System().PermanentDeleteByName(EMOJIS_PERMISSIONS_MIGRATION_KEY); err != nil {
return err
return model.NewAppError("ResetPermissionSystem", "app.system.permanent_delete_by_name.app_error", nil, err.Error(), http.StatusInternalServerError)
}
// Remove the "System" table entry that marks the guest roles permissions migration as done.
if _, err := a.Srv().Store.System().PermanentDeleteByName(GUEST_ROLES_CREATION_MIGRATION_KEY); err != nil {
return err
return model.NewAppError("ResetPermissionSystem", "app.system.permanent_delete_by_name.app_error", nil, err.Error(), http.StatusInternalServerError)
}
// Now that the permissions system has been reset, re-run the migration to reinitialise it.

Просмотреть файл

@@ -176,7 +176,7 @@ func (a *App) doPermissionsMigration(key string, migrationMap permissionsMap) *m
}
if err := a.Srv().Store.System().Save(&model.System{Name: key, Value: "true"}); err != nil {
return err
return model.NewAppError("doPermissionsMigration", "app.system.save.app_error", nil, err.Error(), http.StatusInternalServerError)
}
return nil
}

Просмотреть файл

@@ -1152,14 +1152,14 @@ func doCheckNumberOfActiveUsersWarnMetricStatus(a *App) {
}
for _, warnMetric := range warnMetrics {
data, err := a.Srv().Store.System().GetByName(warnMetric.Id)
if err == nil && data != nil && (data.Value == model.WARN_METRIC_STATUS_ACK || data.Value == model.WARN_METRIC_STATUS_RUNONCE) {
data, nErr := a.Srv().Store.System().GetByName(warnMetric.Id)
if nErr == nil && data != nil && (data.Value == model.WARN_METRIC_STATUS_ACK || data.Value == model.WARN_METRIC_STATUS_RUNONCE) {
mlog.Debug("This metric warning has already been acked or should only run once")
continue
}
if err = a.Srv().Store.System().SaveOrUpdate(&model.System{Name: warnMetric.Id, Value: model.WARN_METRIC_STATUS_LIMIT_REACHED}); err != nil {
mlog.Error("Unable to write to database.", mlog.String("id", warnMetric.Id), mlog.Err(err))
if nErr = a.Srv().Store.System().SaveOrUpdate(&model.System{Name: warnMetric.Id, Value: model.WARN_METRIC_STATUS_LIMIT_REACHED}); nErr != nil {
mlog.Error("Unable to write to database.", mlog.String("id", warnMetric.Id), mlog.Err(nErr))
continue
}
warnMetricStatus, _ := a.getWarnMetricStatusAndDisplayTextsForId(warnMetric.Id, nil)