Merge pull request #1648 from jonboulle/delete_member_404
etcdhttp: return 404 when removing nonexistent member
This commit is contained in:
@ -78,7 +78,7 @@ curl http://10.0.0.10:2379/v2/members -XPOST -H "Content-Type: application/json"
|
||||
|
||||
## Delete a member
|
||||
|
||||
Remove a member from the cluster.
|
||||
Remove a member from the cluster. The member ID must be a hex-encoded uint64.
|
||||
Returns empty when successful. Returns a string describing the failure condition when unsuccessful.
|
||||
|
||||
If the member does not exist in the cluster an HTTP 500(TODO: fix this) will be returned. If the cluster fails to process the request within timeout an HTTP 500 will be returned, though the request may be processed later.
|
||||
|
@ -210,7 +210,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
id, err := types.IDFromString(idStr)
|
||||
if err != nil {
|
||||
writeError(w, httptypes.NewHTTPError(http.StatusBadRequest, err.Error()))
|
||||
writeError(w, httptypes.NewHTTPError(http.StatusNotFound, fmt.Sprintf("No such member: %s", idStr)))
|
||||
return
|
||||
}
|
||||
err = h.server.RemoveMember(ctx, uint64(id))
|
||||
@ -223,6 +223,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
log.Printf("etcdhttp: error removing node %s: %v", id, err)
|
||||
writeError(w, err)
|
||||
default:
|
||||
log.Printf("etcdhttp: removed node %x", id)
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
}
|
||||
|
@ -845,7 +845,7 @@ func TestServeMembersFail(t *testing.T) {
|
||||
},
|
||||
nil,
|
||||
|
||||
http.StatusBadRequest,
|
||||
http.StatusNotFound,
|
||||
},
|
||||
{
|
||||
// etcdserver.RemoveMember with no ID
|
||||
|
Reference in New Issue
Block a user