From a666eae508f0b260024de74215c5012c388a14c2 Mon Sep 17 00:00:00 2001 From: Aryan Singh Date: Sun, 25 Oct 2026 01:07:52 -0500 Subject: [PATCH] REDESIGNED MP2 FOR MP3 --- MP3/membership.go | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/MP3/membership.go b/MP3/membership.go index 3b7408a..ff217a5 100644 --- a/MP3/membership.go +++ b/MP3/membership.go @@ -245,7 +245,33 @@ func (m *MembershipService) handle_failure_detection(ctx context.Context, socket case <-ctx.Done(): return case <-ticker.C: - // TODO: Implement failure detection logic + m.mutex.Lock() + now := time.Now() + + for id, info := range m.members_list { + // Don't check ourselves or already failed nodes + if id == m.self_id || info.State == "down" { + continue + } + + if info.LocalLastSeen == nil { + info.LocalLastSeen = &now + m.members_list[id] = info + continue + } + + // No heartbeat advancement for 2.5 seconds + if now.Sub(*info.LocalLastSeen) > 2500*time.Millisecond { + info.State = "down" + info.LocalFailedSince = &now + + m.members_list[id] = info + + logger.Warn("Member marked DOWN", "member", id) + } + } + + m.mutex.Unlock() } } }