Skip to content

Commit

Permalink
lease: remove http handler for renew request
Browse files Browse the repository at this point in the history
Renew will go through raft, so we need to remove the http handler
to process the renew request. No matter which member receives a
renew request, it just delivers the request to raft instead of
forwarding the request to the leader.
  • Loading branch information
ahrtr committed Jun 7, 2022
1 parent 23d9874 commit 31b19b0
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 63 deletions.
1 change: 0 additions & 1 deletion server/etcdserver/api/etcdhttp/peer.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ func newPeerHandler(
mux.Handle(peerMembersPath, peerMembersHandler)
mux.Handle(peerMemberPromotePrefix, peerMemberPromoteHandler)
if leaseHandler != nil {
mux.Handle(leasehttp.LeasePrefix, leaseHandler)
mux.Handle(leasehttp.LeaseInternalPrefix, leaseHandler)
}
if downgradeEnabledHandler != nil {
Expand Down
31 changes: 0 additions & 31 deletions server/lease/leasehttp/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import (
)

var (
LeasePrefix = "/leases"
LeaseInternalPrefix = "/leases/internal"
applyTimeout = time.Second
ErrLeaseHTTPTimeout = errors.New("waiting for node to catch up its applied index has timed out")
Expand Down Expand Up @@ -61,36 +60,6 @@ func (h *leaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {

var v []byte
switch r.URL.Path {
case LeasePrefix:
lreq := pb.LeaseKeepAliveRequest{}
if uerr := lreq.Unmarshal(b); uerr != nil {
http.Error(w, "error unmarshalling request", http.StatusBadRequest)
return
}
select {
case <-h.waitch():
case <-time.After(applyTimeout):
http.Error(w, ErrLeaseHTTPTimeout.Error(), http.StatusRequestTimeout)
return
}
ttl, rerr := h.l.Renew(lease.LeaseID(lreq.ID))
if rerr != nil {
if rerr == lease.ErrLeaseNotFound {
http.Error(w, rerr.Error(), http.StatusNotFound)
return
}

http.Error(w, rerr.Error(), http.StatusBadRequest)
return
}
// TODO: fill out ResponseHeader
resp := &pb.LeaseKeepAliveResponse{ID: lreq.ID, TTL: ttl}
v, err = resp.Marshal()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}

case LeaseInternalPrefix:
lreq := leasepb.LeaseInternalRequest{}
if lerr := lreq.Unmarshal(b); lerr != nil {
Expand Down
31 changes: 0 additions & 31 deletions server/lease/leasehttp/http_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,30 +26,6 @@ import (
"go.uber.org/zap/zaptest"
)

func TestRenewHTTP(t *testing.T) {
lg := zaptest.NewLogger(t)
be, _ := betesting.NewTmpBackend(t, time.Hour, 10000)
defer betesting.Close(t, be)

le := lease.NewLessor(lg, be, nil, lease.LessorConfig{MinLeaseTTL: int64(5)})
le.Promote(time.Second)
l, err := le.Grant(1, int64(5))
if err != nil {
t.Fatalf("failed to create lease: %v", err)
}

ts := httptest.NewServer(NewHandler(le, waitReady))
defer ts.Close()

ttl, err := RenewHTTP(context.TODO(), l.ID, ts.URL+LeasePrefix, http.DefaultTransport)
if err != nil {
t.Fatal(err)
}
if ttl != 5 {
t.Fatalf("ttl expected 5, got %d", ttl)
}
}

func TestTimeToLiveHTTP(t *testing.T) {
lg := zaptest.NewLogger(t)
be, _ := betesting.NewTmpBackend(t, time.Hour, 10000)
Expand Down Expand Up @@ -77,13 +53,6 @@ func TestTimeToLiveHTTP(t *testing.T) {
}
}

func TestRenewHTTPTimeout(t *testing.T) {
testApplyTimeout(t, func(l *lease.Lease, serverURL string) error {
_, err := RenewHTTP(context.TODO(), l.ID, serverURL+LeasePrefix, http.DefaultTransport)
return err
})
}

func TestTimeToLiveHTTPTimeout(t *testing.T) {
testApplyTimeout(t, func(l *lease.Lease, serverURL string) error {
_, err := TimeToLiveHTTP(context.TODO(), l.ID, true, serverURL+LeaseInternalPrefix, http.DefaultTransport)
Expand Down

0 comments on commit 31b19b0

Please sign in to comment.