Merge pull request #1588 from Maxtonian/inspect2

[CORE-459] Investigate- Panic accessing "/inspect" in Molecula 4.1.1
This commit is contained in:
Maxton Huff 2021-05-10 14:46:39 -05:00 committed by GitHub
commit 2467431caf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -260,7 +260,6 @@ func (h *Handler) populateValidators() {
h.validators["GetTransaction"] = queryValidationSpecRequired()
h.validators["PostTransaction"] = queryValidationSpecRequired()
h.validators["PostFinishTransaction"] = queryValidationSpecRequired()
h.validators["Inspect"] = queryValidationSpecRequired().Optional("indexes", "fields", "views", "shards", "checksum", "containers")
}
@ -397,7 +396,6 @@ func newRouter(handler *Handler) http.Handler {
router.HandleFunc("/index/{index}/field/{field}/import-roaring/{shard}", handler.handlePostImportRoaring).Methods("POST").Name("PostImportRoaring")
router.HandleFunc("/index/{index}/query", handler.handlePostQuery).Methods("POST").Name("PostQuery")
router.HandleFunc("/info", handler.handleGetInfo).Methods("GET").Name("GetInfo")
router.HandleFunc("/inspect", handler.handleInspect).Methods("GET").Name("Inspect")
router.HandleFunc("/recalculate-caches", handler.handleRecalculateCaches).Methods("POST").Name("RecalculateCaches")
router.HandleFunc("/schema", handler.handleGetSchema).Methods("GET").Name("GetSchema")
router.HandleFunc("/schema/details", handler.handleGetSchemaDetails).Methods("GET").Name("GetSchemaDetails")
@ -803,37 +801,6 @@ func (h *Handler) handleGetInfo(w http.ResponseWriter, r *http.Request) {
}
}
func (h *Handler) handleInspect(w http.ResponseWriter, r *http.Request) {
if !validHeaderAcceptJSON(r.Header) {
http.Error(w, "JSON only acceptable response", http.StatusNotAcceptable)
return
}
q := r.URL.Query()
_, checksum := q["checksum"]
_, containers := q["containers"]
req := pilosa.InspectRequest{
HolderFilterParams: pilosa.HolderFilterParams{
Indexes: q.Get("indexes"),
Fields: q.Get("fields"),
Views: q.Get("views"),
Shards: q.Get("shards"),
},
InspectRequestParams: pilosa.InspectRequestParams{
Checksum: checksum,
Containers: containers,
},
}
info, err := h.api.Inspect(r.Context(), &req)
if err != nil {
http.Error(w, fmt.Sprintf("inspect request: %v", err), http.StatusBadRequest)
return
}
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(info); err != nil {
h.logger.Errorf("write inspect response error: %s", err)
}
}
type getSchemaResponse struct {
Indexes []*pilosa.IndexInfo `json:"indexes"`
}