working further on handling vm ghosting
Signed-off-by: Jeff Carr <jcarr@wit.com>
This commit is contained in:
parent
8b588eeba5
commit
2c1c3482fe
15
poll.go
15
poll.go
|
@ -108,26 +108,35 @@ func (h *HyperT) pollHypervisor() {
|
||||||
d.Current.Hypervisor = h.pb.Hostname
|
d.Current.Hypervisor = h.pb.Hostname
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// these are the droplets that don't exist anymore on this hypervisor
|
||||||
|
// this should mean you ran shutdown within domU
|
||||||
for name, t := range h.lastDroplets {
|
for name, t := range h.lastDroplets {
|
||||||
dur := time.Since(t)
|
dur := time.Since(t)
|
||||||
if dur > me.hyperPollDelay {
|
if dur > me.hyperPollDelay {
|
||||||
d := me.cluster.FindDropletByName(name)
|
d := me.cluster.FindDropletByName(name)
|
||||||
|
header := d.SprintHeader()
|
||||||
if d == nil {
|
if d == nil {
|
||||||
log.Info("droplet has probably powered down", name, "but findDroplet returned nil")
|
log.Info(header, "droplet has probably powered down", name, "but findDroplet returned nil")
|
||||||
// should delete this from h.lastDroplets
|
// should delete this from h.lastDroplets
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if d.Current.State == pb.DropletState_OFF {
|
||||||
|
log.Info(header, "droplet timed out and is off. remove from h.lastDroplets[] slice")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
// everthing below here is dumb and needs to be rethought
|
// everthing below here is dumb and needs to be rethought
|
||||||
if d.Current.State != pb.DropletState_UNKNOWN {
|
if d.Current.State != pb.DropletState_UNKNOWN {
|
||||||
d.SetState(pb.DropletState_UNKNOWN)
|
d.SetState(pb.DropletState_UNKNOWN)
|
||||||
log.Info("set state UNKNOWN here", name)
|
log.Info(header, "set state UNKNOWN here", name)
|
||||||
}
|
}
|
||||||
if d.Current.State == pb.DropletState_UNKNOWN {
|
if d.Current.State == pb.DropletState_UNKNOWN {
|
||||||
if dur > time.Minute*2 {
|
if dur > time.Minute*2 {
|
||||||
// what this means is the droplet probably wasn't migrated or the migrate failed
|
// what this means is the droplet probably wasn't migrated or the migrate failed
|
||||||
// where should this be checked? the status needs to be changed to OFF
|
// where should this be checked? the status needs to be changed to OFF
|
||||||
s := pb.FormatDuration(dur)
|
s := pb.FormatDuration(dur)
|
||||||
log.Info("UNKNOWN state for more than 2 minutes (clearing out ?)", name, s)
|
log.Info(header, "UNKNOWN state for more than 2 minutes (clearing out ?)", name, s)
|
||||||
|
|
||||||
// it might be safe to set the status to OFF here. not really. this poll needs
|
// it might be safe to set the status to OFF here. not really. this poll needs
|
||||||
// to be moved somewhere else. there needs to be a new goroutine not tied to the
|
// to be moved somewhere else. there needs to be a new goroutine not tied to the
|
||||||
|
|
Loading…
Reference in New Issue