mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 10:24:54 -06:00
Alerting: Handle marshaling Inf values (#36947)
* SSE: change EvalMatch json value encoding to string * update MarshalJSON on null.Float to handle inf as null fixes #36424
This commit is contained in:
parent
f8118cceaf
commit
b6a7156300
@ -98,9 +98,9 @@ func (f *Float) UnmarshalText(text []byte) error {
|
||||
}
|
||||
|
||||
// MarshalJSON implements json.Marshaler.
|
||||
// It will encode null if this Float is null.
|
||||
// It will encode null if this Float is null, NaN, of Inf.
|
||||
func (f Float) MarshalJSON() ([]byte, error) {
|
||||
if !f.Valid || math.IsNaN(f.Float64) {
|
||||
if !f.Valid || math.IsNaN(f.Float64) || math.IsInf(f.Float64, 0) {
|
||||
return []byte(nullString), nil
|
||||
}
|
||||
return []byte(strconv.FormatFloat(f.Float64, 'f', -1, 64)), nil
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/data"
|
||||
"github.com/grafana/grafana/pkg/expr/mathexp"
|
||||
@ -61,12 +62,29 @@ func (ccc *ConditionsCmd) NeedsVars() []string {
|
||||
}
|
||||
|
||||
// EvalMatch represents the series violating the threshold.
|
||||
// It goes into the metadata of data frames so it can be extracted.
|
||||
type EvalMatch struct {
|
||||
Value *float64 `json:"value"`
|
||||
Metric string `json:"metric"`
|
||||
Labels data.Labels `json:"labels"`
|
||||
}
|
||||
|
||||
func (em EvalMatch) MarshalJSON() ([]byte, error) {
|
||||
fs := ""
|
||||
if em.Value != nil {
|
||||
fs = strconv.FormatFloat(*em.Value, 'f', -1, 64)
|
||||
}
|
||||
return json.Marshal(struct {
|
||||
Value string `json:"value"`
|
||||
Metric string `json:"metric"`
|
||||
Labels data.Labels `json:"labels"`
|
||||
}{
|
||||
fs,
|
||||
em.Metric,
|
||||
em.Labels,
|
||||
})
|
||||
}
|
||||
|
||||
// Execute runs the command and returns the results or an error if the command
|
||||
// failed to execute.
|
||||
func (ccc *ConditionsCmd) Execute(ctx context.Context, vars mathexp.Vars) (mathexp.Results, error) {
|
||||
|
Loading…
Reference in New Issue
Block a user