MCPcopy Create free account
hub / github.com/couchbase/cbft / ServeHTTP

Method ServeHTTP

query_supervisor.go:386–453  ·  view source on GitHub ↗
(
	w http.ResponseWriter, req *http.Request)

Source from the content-addressed store, hash-verified

384}
385
386func (qss *QuerySupervisorDetails) ServeHTTP(
387 w http.ResponseWriter, req *http.Request) {
388 indexName := rest.RequestVariableLookup(req, "indexName")
389 queryParams := req.URL.Query()
390 params := queryParams.Get("longerThan")
391 var rv *responseData
392 var longerThan time.Duration
393
394 if len(params) > 1 {
395 duration, err := time.ParseDuration(params)
396 if err != nil {
397 rest.ShowError(w, nil,
398 fmt.Sprintf("query details: duration parse error, err: %v", err),
399 http.StatusBadRequest)
400 return
401 }
402 longerThan = duration
403 }
404 if req.Header.Get(rest.CLUSTER_ACTION) != "" {
405 queryMap, queryCount := querySupervisor.ListLongerThanWithQueryCount(
406 longerThan, indexName)
407 rv = &responseData{
408 Status: "ok",
409 TotalActiveQueryCount: uint64(queryCount),
410 FilteredActiveQueries: filterQueryStats{
411 IndexName: indexName,
412 LongerThan: params,
413 QueryCount: uint64(len(queryMap)),
414 QueryMap: qss.changeQueryMapFormat(queryMap),
415 },
416 }
417 } else {
418 nodeDefs, err := qss.mgr.GetNodeDefs(cbgt.NODE_DEFS_WANTED, false)
419 if err != nil {
420 rest.ShowError(w, nil, fmt.Sprintf("query details: could not get"+
421 " the node defintions, err: %v", err),
422 http.StatusInternalServerError)
423 return
424 }
425 if nodeDefs == nil {
426 rest.ShowError(w, nil, fmt.Sprintf("query details: empty node"+
427 " definitions"), http.StatusInternalServerError)
428 }
429
430 responses, errs := qss.getSupervisorMaps(nodeDefs, indexName, params)
431 if len(responses) == 0 {
432 errStats, err := MarshalJSON(responseStats{
433 Total: len(errs),
434 Failed: len(errs),
435 Error: errs,
436 })
437 if err != nil {
438 rest.ShowError(w, nil, fmt.Sprintf("query details: failed to"+
439 " marshal response stats info, err: %s", err),
440 http.StatusInternalServerError)
441 return
442 }
443 rest.ShowError(w, nil,

Callers

nothing calls this directly

Calls 7

changeQueryMapFormatMethod · 0.95
getSupervisorMapsMethod · 0.95
mergeResponsesMethod · 0.95
MarshalJSONFunction · 0.85
GetMethod · 0.80
QueryMethod · 0.45

Tested by

no test coverage detected