diff options
| author | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-02-16 14:18:36 +0500 |
|---|---|---|
| committer | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-02-16 14:18:36 +0500 |
| commit | 9ea09cc41ca90ba57b9ba304ab5e5e879eff82fd (patch) | |
| tree | 4729def8af1ec83151e9bfff52c607c22bed6b10 /weed/server/volume_server_handlers_admin.go | |
| parent | b394380a36c3ae8c2764a9d181dbe01cff86b71e (diff) | |
| download | seaweedfs-9ea09cc41ca90ba57b9ba304ab5e5e879eff82fd.tar.xz seaweedfs-9ea09cc41ca90ba57b9ba304ab5e5e879eff82fd.zip | |
healthz check to avoid drain pod with last replicas
Diffstat (limited to 'weed/server/volume_server_handlers_admin.go')
| -rw-r--r-- | weed/server/volume_server_handlers_admin.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/weed/server/volume_server_handlers_admin.go b/weed/server/volume_server_handlers_admin.go index 7e6c06871..37cf109e2 100644 --- a/weed/server/volume_server_handlers_admin.go +++ b/weed/server/volume_server_handlers_admin.go @@ -1,6 +1,7 @@ package weed_server import ( + "github.com/chrislusf/seaweedfs/weed/topology" "net/http" "path/filepath" @@ -9,6 +10,24 @@ import ( "github.com/chrislusf/seaweedfs/weed/util" ) +func (vs *VolumeServer) healthzHandler(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Server", "SeaweedFS Volume "+util.VERSION) + volumeInfos := vs.store.VolumeInfos() + for _, vinfo := range volumeInfos { + if len(vinfo.Collection) == 0 { + continue + } + if vinfo.ReplicaPlacement.GetCopyCount() > 1 { + _, err := topology.GetWritableRemoteReplications(vs.store, vs.grpcDialOption, vinfo.Id, vs.GetMaster) + if err != nil { + w.WriteHeader(http.StatusServiceUnavailable) + return + } + } + } + w.WriteHeader(http.StatusOK) +} + func (vs *VolumeServer) statusHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Server", "SeaweedFS Volume "+util.VERSION) m := make(map[string]interface{}) |
