attempt to fix a race condition
This commit is contained in:
@@ -181,7 +181,7 @@ func (m *MonitorMgr) Remove(appName string) {
|
|||||||
defer m.monMu.Unlock()
|
defer m.monMu.Unlock()
|
||||||
if a, ok := m.monitors[appName]; ok {
|
if a, ok := m.monitors[appName]; ok {
|
||||||
if a.checkOn {
|
if a.checkOn {
|
||||||
a.done <- true
|
close(a.done)
|
||||||
}
|
}
|
||||||
if a.announced {
|
if a.announced {
|
||||||
if err := m.ctrl.Withdraw(a.app.Vip); err != nil {
|
if err := m.ctrl.Withdraw(a.app.Vip); err != nil {
|
||||||
@@ -203,6 +203,7 @@ func (m *MonitorMgr) Remove(appName string) {
|
|||||||
}
|
}
|
||||||
delete(m.monitors, appName)
|
delete(m.monitors, appName)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *MonitorMgr) runMonitors(app *App) bool {
|
func (m *MonitorMgr) runMonitors(app *App) bool {
|
||||||
for _, mon := range app.Monitors {
|
for _, mon := range app.Monitors {
|
||||||
var check bool
|
var check bool
|
||||||
@@ -250,7 +251,7 @@ func (m *MonitorMgr) checkCond(am *appMon) error {
|
|||||||
}
|
}
|
||||||
am.announced = true
|
am.announced = true
|
||||||
if exit, ok := m.cleanups[app.Name]; ok {
|
if exit, ok := m.cleanups[app.Name]; ok {
|
||||||
exit <- true
|
close(exit)
|
||||||
delete(m.cleanups, app.Name)
|
delete(m.cleanups, app.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -285,6 +286,7 @@ func (m *MonitorMgr) runLoop(am *appMon) {
|
|||||||
}
|
}
|
||||||
case <-am.done:
|
case <-am.done:
|
||||||
glog.V(2).Infof("Exit run-loop for app: %s", am.app.Name)
|
glog.V(2).Infof("Exit run-loop for app: %s", am.app.Name)
|
||||||
|
am.checkOn = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -298,7 +300,7 @@ func (m *MonitorMgr) CloseAll() {
|
|||||||
}
|
}
|
||||||
for _, am := range m.monitors {
|
for _, am := range m.monitors {
|
||||||
if am.checkOn {
|
if am.checkOn {
|
||||||
am.done <- true
|
close(am.done)
|
||||||
}
|
}
|
||||||
deleteLoopback(am.app.Vip.Net)
|
deleteLoopback(am.app.Vip.Net)
|
||||||
for _, nat := range am.app.Nats {
|
for _, nat := range am.app.Nats {
|
||||||
|
|||||||
Reference in New Issue
Block a user