mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #8272 from gyuho/health
/health reports unhealthy when alarm is raised
This commit is contained in:
commit
608df0fc90
@ -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") {
|
||||
|
@ -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 {
|
||||
|
@ -1667,3 +1667,7 @@ func (s *EtcdServer) goAttach(f func()) {
|
||||
f()
|
||||
}()
|
||||
}
|
||||
|
||||
func (s *EtcdServer) Alarms() []*pb.AlarmMember {
|
||||
return s.alarmStore.Get(pb.AlarmType_NONE)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user