discovery stale records dropout implemented
This commit is contained in:
@@ -216,22 +216,35 @@ func (s *RegistryService) handleHeartbeat(_ context.Context, env me.Envelope) (e
|
||||
s.logWarn("Failed to decode discovery heartbeat payload", fields...)
|
||||
return err
|
||||
}
|
||||
s.logDebug("Discovery heartbeat received", append(envelopeFields(env), zap.String("id", payload.ID), zap.String("instance_id", payload.InstanceID), zap.String("status", payload.Status))...)
|
||||
if strings.TrimSpace(payload.InstanceID) == "" && strings.TrimSpace(payload.ID) == "" {
|
||||
entryKey := strings.TrimSpace(payload.EntryKey)
|
||||
s.logDebug("Discovery heartbeat received", append(envelopeFields(env), zap.String("id", payload.ID), zap.String("instance_id", payload.InstanceID), zap.String("entry_key", entryKey), zap.String("status", payload.Status))...)
|
||||
if entryKey == "" && strings.TrimSpace(payload.InstanceID) == "" && strings.TrimSpace(payload.ID) == "" {
|
||||
return nil
|
||||
}
|
||||
if strings.TrimSpace(payload.InstanceID) == "" {
|
||||
if entryKey == "" && strings.TrimSpace(payload.InstanceID) == "" {
|
||||
fields := append(envelopeFields(env), zap.String("id", payload.ID))
|
||||
s.logWarn("Discovery heartbeat missing instance id", fields...)
|
||||
}
|
||||
status := strings.TrimSpace(payload.Status)
|
||||
ts := time.Unix(payload.TS, 0)
|
||||
if ts.Unix() <= 0 {
|
||||
ts = time.Now()
|
||||
}
|
||||
results := s.registry.UpdateHeartbeat(payload.ID, payload.InstanceID, strings.TrimSpace(payload.Status), ts, time.Now())
|
||||
if len(results) == 0 {
|
||||
s.logDebug("Discovery heartbeat ignored: entry not found", zap.String("id", payload.ID), zap.String("instance_id", payload.InstanceID))
|
||||
return nil
|
||||
now := time.Now()
|
||||
var results []UpdateResult
|
||||
if entryKey != "" {
|
||||
result, found := s.registry.UpdateHeartbeatByKey(entryKey, status, ts, now)
|
||||
if !found {
|
||||
s.logDebug("Discovery heartbeat ignored: entry not found", zap.String("entry_key", entryKey), zap.String("id", payload.ID), zap.String("instance_id", payload.InstanceID))
|
||||
return nil
|
||||
}
|
||||
results = append(results, result)
|
||||
} else {
|
||||
results = s.registry.UpdateHeartbeat(payload.ID, payload.InstanceID, status, ts, now)
|
||||
if len(results) == 0 {
|
||||
s.logDebug("Discovery heartbeat ignored: entry not found", zap.String("id", payload.ID), zap.String("instance_id", payload.InstanceID))
|
||||
return nil
|
||||
}
|
||||
}
|
||||
for _, result := range results {
|
||||
if result.BecameHealthy {
|
||||
|
||||
Reference in New Issue
Block a user