mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-09 23:24:05 -08:00
Fix premature rule evaluation
This commit prevents rule evaluation from starting until after the storage is ready.
This commit is contained in:
parent
c0474d5ffe
commit
37d80c4b25
|
@ -155,6 +155,7 @@ func Main() int {
|
|||
prometheus.MustRegister(configSuccess)
|
||||
prometheus.MustRegister(configSuccessTime)
|
||||
|
||||
go ruleManager.Run()
|
||||
defer ruleManager.Stop()
|
||||
|
||||
go notificationHandler.Run()
|
||||
|
|
|
@ -325,6 +325,7 @@ type Manager struct {
|
|||
opts *ManagerOptions
|
||||
groups map[string]*Group
|
||||
mtx sync.RWMutex
|
||||
block chan struct{}
|
||||
}
|
||||
|
||||
// ManagerOptions bundles options for the Manager.
|
||||
|
@ -341,10 +342,16 @@ func NewManager(o *ManagerOptions) *Manager {
|
|||
manager := &Manager{
|
||||
groups: map[string]*Group{},
|
||||
opts: o,
|
||||
block: make(chan struct{}),
|
||||
}
|
||||
return manager
|
||||
}
|
||||
|
||||
// Run starts processing of the rule manager.
|
||||
func (m *Manager) Run() {
|
||||
close(m.block)
|
||||
}
|
||||
|
||||
// Stop the rule manager's rule evaluation cycles.
|
||||
func (m *Manager) Stop() {
|
||||
log.Info("Stopping rule manager...")
|
||||
|
@ -398,7 +405,13 @@ func (m *Manager) ApplyConfig(conf *config.Config) bool {
|
|||
oldg.stop()
|
||||
newg.copyState(oldg)
|
||||
}
|
||||
go newg.run()
|
||||
go func() {
|
||||
// Wait with starting evaluation until the rule manager
|
||||
// is told to run. This is necessary to avoid running
|
||||
// queries against a bootstrapping storage.
|
||||
<-m.block
|
||||
newg.run()
|
||||
}()
|
||||
wg.Done()
|
||||
}(newg)
|
||||
}
|
||||
|
|
|
@ -134,7 +134,7 @@ func webUiTemplatesAlertsHtml() (*asset, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
info := bindataFileInfo{name: "web/ui/templates/alerts.html", size: 1704, mode: os.FileMode(420), modTime: time.Unix(1450348695, 0)}
|
||||
info := bindataFileInfo{name: "web/ui/templates/alerts.html", size: 1704, mode: os.FileMode(420), modTime: time.Unix(1450878652, 0)}
|
||||
a := &asset{bytes: bytes, info: info}
|
||||
return a, nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue