implement periodic checks in a function

This commit is contained in:
Branden J Brown 2025-03-12 09:54:59 -04:00
parent 85e381f4bd
commit 936decf0e6

View File

@ -1,7 +1,9 @@
package httpnode
import (
"context"
"errors"
"fmt"
"net"
"net/http"
"net/netip"
@ -49,6 +51,20 @@ func (n *Node) Router() http.Handler {
return m
}
// Check performs checks that implement the Chord protocol.
// It must be called periodically while the node is alive.
func (n *Node) Check(ctx context.Context) error {
if err := chord.Stabilize(ctx, n.client, n.self); err != nil {
return fmt.Errorf("failed to stabilize: %w", err)
}
// TODO(zeph): enable once implemented
// if err := chord.FixFingers(ctx, n.client, n.self); err != nil {
// return fmt.Errorf("failed to fix fingers: %w", err)
// }
chord.CheckPredecessor(ctx, n.client, n.self)
return nil
}
func (n *Node) successor(w http.ResponseWriter, r *http.Request) {
s := r.FormValue("s")
id, err := chord.ParseID(s)