mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-28 15:09:39 -08:00
Merge pull request #1298 from prometheus/rulemgrfix
Fix premature rule evaluation
This commit is contained in:
commit
c44594185f
|
@ -155,6 +155,7 @@ func Main() int {
|
||||||
prometheus.MustRegister(configSuccess)
|
prometheus.MustRegister(configSuccess)
|
||||||
prometheus.MustRegister(configSuccessTime)
|
prometheus.MustRegister(configSuccessTime)
|
||||||
|
|
||||||
|
go ruleManager.Run()
|
||||||
defer ruleManager.Stop()
|
defer ruleManager.Stop()
|
||||||
|
|
||||||
go notificationHandler.Run()
|
go notificationHandler.Run()
|
||||||
|
|
|
@ -325,6 +325,7 @@ type Manager struct {
|
||||||
opts *ManagerOptions
|
opts *ManagerOptions
|
||||||
groups map[string]*Group
|
groups map[string]*Group
|
||||||
mtx sync.RWMutex
|
mtx sync.RWMutex
|
||||||
|
block chan struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ManagerOptions bundles options for the Manager.
|
// ManagerOptions bundles options for the Manager.
|
||||||
|
@ -341,10 +342,16 @@ func NewManager(o *ManagerOptions) *Manager {
|
||||||
manager := &Manager{
|
manager := &Manager{
|
||||||
groups: map[string]*Group{},
|
groups: map[string]*Group{},
|
||||||
opts: o,
|
opts: o,
|
||||||
|
block: make(chan struct{}),
|
||||||
}
|
}
|
||||||
return manager
|
return manager
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Run starts processing of the rule manager.
|
||||||
|
func (m *Manager) Run() {
|
||||||
|
close(m.block)
|
||||||
|
}
|
||||||
|
|
||||||
// Stop the rule manager's rule evaluation cycles.
|
// Stop the rule manager's rule evaluation cycles.
|
||||||
func (m *Manager) Stop() {
|
func (m *Manager) Stop() {
|
||||||
log.Info("Stopping rule manager...")
|
log.Info("Stopping rule manager...")
|
||||||
|
@ -398,7 +405,13 @@ func (m *Manager) ApplyConfig(conf *config.Config) bool {
|
||||||
oldg.stop()
|
oldg.stop()
|
||||||
newg.copyState(oldg)
|
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()
|
wg.Done()
|
||||||
}(newg)
|
}(newg)
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,7 +134,7 @@ func webUiTemplatesAlertsHtml() (*asset, error) {
|
||||||
return nil, err
|
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}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue