Skip to content

Commit

Permalink
Merge pull request #8272 from gyuho/health
Browse files Browse the repository at this point in the history
/health reports unhealthy when alarm is raised
  • Loading branch information
gyuho authored Jul 18, 2017
2 parents 9dc6593 + 91470a8 commit 608df0f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 0 deletions.
5 changes: 5 additions & 0 deletions e2e/ctl_v3_alarm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ func alarmTest(cx ctlCtx) {
cx.t.Fatal(err)
}

// '/health' handler should return 'false'
if err := cURLGet(cx.epc, cURLReq{endpoint: "/health", expected: `{"health": "false"}`}); err != nil {
cx.t.Fatalf("failed get with curl (%v)", err)
}

// check that Put is rejected when alarm is on
if err := ctlV3Put(cx, "3rd_test", smallbuf, ""); err != nil {
if !strings.Contains(err.Error(), "etcdserver: mvcc: database space exceeded") {
Expand Down
4 changes: 4 additions & 0 deletions etcdserver/api/etcdhttp/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ func healthHandler(server *etcdserver.EtcdServer) http.HandlerFunc {
http.Error(w, `{"health": "false"}`, http.StatusServiceUnavailable)
return
}
if len(server.Alarms()) > 0 {
w.Write([]byte(`{"health": "false"}`))
return
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
if _, err := server.Do(ctx, etcdserverpb.Request{Method: "QGET"}); err != nil {
Expand Down
4 changes: 4 additions & 0 deletions etcdserver/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -1667,3 +1667,7 @@ func (s *EtcdServer) goAttach(f func()) {
f()
}()
}

func (s *EtcdServer) Alarms() []*pb.AlarmMember {
return s.alarmStore.Get(pb.AlarmType_NONE)
}

0 comments on commit 608df0f

Please sign in to comment.