From edf4b07c05f05a0b348ff335dcb6b7b029187959 Mon Sep 17 00:00:00 2001 From: Christian Simon Date: Fri, 14 Jan 2022 12:36:14 +0000 Subject: [PATCH] Adopt ring page handler within the BasicLifecycler --- ring/basic_lifecycler.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ring/basic_lifecycler.go b/ring/basic_lifecycler.go index 726a85430..480eab2d1 100644 --- a/ring/basic_lifecycler.go +++ b/ring/basic_lifecycler.go @@ -3,6 +3,7 @@ package ring import ( "context" "fmt" + "net/http" "sort" "sync" "time" @@ -491,3 +492,20 @@ func (l *BasicLifecycler) run(fn func() error) error { return <-errCh } } + +func (l *BasicLifecycler) casRing(ctx context.Context, f func(in interface{}) (out interface{}, retry bool, err error)) error { + return l.store.CAS(ctx, l.ringKey, f) +} + +func (l *BasicLifecycler) getRing(ctx context.Context) (*Desc, error) { + obj, err := l.store.Get(ctx, l.ringKey) + if err != nil { + return nil, err + } + + return GetOrCreateRingDesc(obj), nil +} + +func (l *BasicLifecycler) ServeHTTP(w http.ResponseWriter, req *http.Request) { + newRingPageHandler(l.logger, l, l.cfg.HeartbeatPeriod).handle(w, req) +}