Skip to content

Wrong json umarshal bug for model value #398

@kitianFresh

Description

@kitianFresh

func (v *SampleValue) UnmarshalJSON(b []byte) error {

I found a strange bug, the response data unmarshalled by prom client-go is wrong by chance.

I use the queryRange API provided by prometheus client go as followings

image

and i print the time series data returned by the queryRange api, it has unexpected data value. it is very large and unexpected.

image

the value logged function is below, i use json marshal directly to marshal the returned data by api, i am sure that this is the data returned by prometheus client-go api queryRange function:

image

and then i use curl curl -G --data-urlencode 'query=irate(container_cpu_usage_seconds_total{container!="POD",namespace="ns-prjchlvc-1544041-production",pod=~"^monitor-server-siliconvalley-150001.*$",container="second-monitor-server"}[3m])' --data-urlencode 'start=1658205420.000' --data-urlencode 'end=1658865360.000' --data-urlencode 'step=60' http://127.0.0.1:9090/api/v1/query_range to query the prometheus directly, it returned normal data as expected. you can see the following data timestamp and value, it is what we want. but the above image is use the client-go api, with the same param, it has unexpected value at the same timestamp.

image

So i think the json unmarshal has some bug the prometheus client go impelmented

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions