profiler: Download API returns error when all nodes fail (#6525)

When download profiling data API fails to gather profiling data
from all nodes for any reason (including profiler not enabled),
return 400 http code with the appropriate json message.
master
Anis Elleuch 6 years ago committed by kannappanr
parent ed703c065d
commit 6c7c6bec91
  1. 10
      cmd/admin-handlers.go
  2. 6
      cmd/api-errors.go

@ -355,8 +355,7 @@ func (a adminAPIHandlers) DownloadProfilingHandler(w http.ResponseWriter, r *htt
return
}
// Return 200 OK
w.WriteHeader(http.StatusOK)
profilingDataFound := false
// Initialize a zip writer which will provide a zipped content
// of profiling data of all nodes
@ -371,6 +370,8 @@ func (a adminAPIHandlers) DownloadProfilingHandler(w http.ResponseWriter, r *htt
continue
}
profilingDataFound = true
// Send profiling data to zip as file
header, err := zip.FileInfoHeader(dummyFileInfo{
name: fmt.Sprintf("profiling-%d", i),
@ -391,6 +392,11 @@ func (a adminAPIHandlers) DownloadProfilingHandler(w http.ResponseWriter, r *htt
return
}
}
if !profilingDataFound {
writeErrorResponseJSON(w, ErrAdminProfilerNotEnabled, r.URL)
return
}
}
// extractHealInitParams - Validates params for heal init API.

@ -291,6 +291,7 @@ const (
ErrInvalidColumnIndex
ErrMissingHeaders
ErrAdminConfigNotificationTargetsFailed
ErrAdminProfilerNotEnabled
)
// error code to APIError structure, these fields carry respective
@ -892,6 +893,11 @@ var errorCodeResponse = map[APIErrorCode]APIError{
Description: "Configuration update failed due an unsuccessful attempt to connect to one or more notification servers",
HTTPStatusCode: http.StatusBadRequest,
},
ErrAdminProfilerNotEnabled: {
Code: "XMinioAdminProfilerNotEnabled",
Description: "Unable to perform the requested operation because profiling is not enabled",
HTTPStatusCode: http.StatusBadRequest,
},
ErrAdminCredentialsMismatch: {
Code: "XMinioAdminCredentialsMismatch",
Description: "Credentials in config mismatch with server environment variables",

Loading…
Cancel
Save