Alerting: Update scheduler to receive rule updates only from database (#64662)
Alerting: Update scheduler to get updates only from database (#64635)
* stop using the scheduler's Update and Delete methods all communication must be via the database
* update scheduler's registry to calculate diff before re-setting the cache
* update fetcher to return the diff generated by registry
* update processTick to update rule eval routine if the rule was updated and it is not going to be evaluated at this tick.
* remove references to the scheduler from api package
* remove unused methods in the scheduler
(cherry picked from commit 85a954cd81)
# Conflicts:
# pkg/services/ngalert/api/api_ruler.go
# pkg/services/ngalert/ngalert.go
# pkg/services/ngalert/ngalert_test.go
# pkg/services/ngalert/schedule/schedule.go
# pkg/services/ngalert/schedule/schedule_mock.go
# pkg/services/ngalert/schedule/schedule_unit_test.go
This commit is contained in:
@@ -24,7 +24,6 @@ import (
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
apimodels "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions"
|
||||
ngmodels "github.com/grafana/grafana/pkg/services/ngalert/models"
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/schedule"
|
||||
"github.com/grafana/grafana/pkg/util"
|
||||
)
|
||||
|
||||
@@ -38,7 +37,6 @@ type RulerSrv struct {
|
||||
provenanceStore provisioning.ProvisioningStore
|
||||
store RuleStore
|
||||
QuotaService quota.Service
|
||||
scheduleService schedule.ScheduleService
|
||||
log log.Logger
|
||||
cfg *setting.UnifiedAlertingSettings
|
||||
ac accesscontrol.AccessControl
|
||||
@@ -145,12 +143,6 @@ func (srv RulerSrv) RouteDeleteAlertRules(c *models.ReqContext, namespaceTitle s
|
||||
}
|
||||
return ErrResp(http.StatusInternalServerError, err, "failed to delete rule group")
|
||||
}
|
||||
|
||||
logger.Debug("rules have been deleted from the store. updating scheduler")
|
||||
for _, ruleKeys := range deletedGroups {
|
||||
srv.scheduleService.DeleteAlertRule(ruleKeys...)
|
||||
}
|
||||
|
||||
return response.JSON(http.StatusAccepted, util.DynMap{"message": "rules deleted"})
|
||||
}
|
||||
|
||||
@@ -422,21 +414,6 @@ func (srv RulerSrv) updateAlertRulesInGroup(c *models.ReqContext, groupKey ngmod
|
||||
return ErrResp(http.StatusInternalServerError, err, "failed to update rule group")
|
||||
}
|
||||
|
||||
for _, rule := range finalChanges.Update {
|
||||
srv.scheduleService.UpdateAlertRule(ngmodels.AlertRuleKey{
|
||||
OrgID: c.SignedInUser.OrgID,
|
||||
UID: rule.Existing.UID,
|
||||
}, rule.Existing.Version+1)
|
||||
}
|
||||
|
||||
if len(finalChanges.Delete) > 0 {
|
||||
keys := make([]ngmodels.AlertRuleKey, 0, len(finalChanges.Delete))
|
||||
for _, rule := range finalChanges.Delete {
|
||||
keys = append(keys, rule.GetKey())
|
||||
}
|
||||
srv.scheduleService.DeleteAlertRule(keys...)
|
||||
}
|
||||
|
||||
if finalChanges.IsEmpty() {
|
||||
return response.JSON(http.StatusAccepted, util.DynMap{"message": "no changes detected in the rule group"})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user