Skip to content

Native encode add null value to metrics data type value #18558

@ee07b415

Description

@ee07b415

A note for the community

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

Problem

I'm testing the native_json encode and decode as the sink and source, the vector service always runs into the panic as:

And I try to print all the native_json enabled data find:

{
                "metric":{
                    "name":"source_lag_time_seconds",
                    "namespace":"vector",
                    "tags":{
                        "component_id":"internal_metric_source",
                        "component_kind":"source",
                        "component_name":"internal_metric_source",
                        "component_type":"internal_metrics",
                        "host":""},
                    "timestamp":"2023-09-14T01:29:16.224012Z",
                    "kind":"absolute",
                    "aggregated_histogram": {
                        "buckets":[
                            {"upper_limit":0.015625,"count":0},
                            {"upper_limit":0.03125,"count":0},
                            {"upper_limit":0.0625,"count":0},
                            {"upper_limit":0.125,"count":0},
                            {"upper_limit":0.25,"count":0},
                            {"upper_limit":0.5,"count":0},
                            {"upper_limit":1.0,"count":0},
                            {"upper_limit":2.0,"count":0},
                            {"upper_limit":4.0,"count":0},
                            {"upper_limit":8.0,"count":0},
                            {"upper_limit":16.0,"count":0},
                            {"upper_limit":32.0,"count":0},
                            {"upper_limit":64.0,"count":0},
                            {"upper_limit":128.0,"count":0},
                            {"upper_limit":256.0,"count":0},
                            {"upper_limit":512.0,"count":0},
                            {"upper_limit":1024.0,"count":0},
                            {"upper_limit":2048.0,"count":0},
                            {"upper_limit":4096.0,"count":0},
                            {"upper_limit":null,"count":0}],
                        "count":0,
                        "sum":0.0
                    }
                }
            }

We have a null value at the butcket upper_limit, changing this to a number will solve the problem, so I think the problem is why encoder pick null while we are looking for number.

Add the prometheus exporter output for the metrics:

# HELP vector_source_lag_time_seconds source_lag_time_seconds
# TYPE vector_source_lag_time_seconds histogram
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="0.015625"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="0.03125"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="0.0625"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="0.125"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="0.25"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="0.5"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="1"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="2"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="4"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="8"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="16"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="32"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="64"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="128"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="256"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="512"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="1024"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="2048"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="4096"} 123 1694657914639
vector_source_lag_time_seconds_bucket{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net",le="+Inf"} 123 1694657914639
vector_source_lag_time_seconds_sum{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net"} 0.026000000000000016 1694657914639
vector_source_lag_time_seconds_count{component_id="internal_metric_source",component_kind="source",component_name="internal_metric_source",component_type="internal_metrics",host=".attlocal.net"} 123 1694657914639

Configuration

sources:
  internal_metric_source:
    type: internal_metrics
    scrape_interval_secs: 15
sinks:
  console:
    type: console
    inputs: ["internal_metric_source"]
    encoding:
      codec: native_json

Version

vector 0.33.0

Debug Output

thread 'decoding::format::native_json::test::parses_metric' panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: null, expected f64", line: 0, column: 0)', lib/codecs/src/decoding/format/native_json.rs:215:74
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::result::unwrap_failed
   3: core::result::Result<T,E>::unwrap
             at /private/tmp/rust-20230901-16881-ycyewx/rustc-1.72.0-src/library/core/src/result.rs:1076:23
   4: codecs::decoding::format::native_json::test::parses_metric
             at ./src/decoding/format/native_json.rs:215:26
   5: codecs::decoding::format::native_json::test::parses_metric::{{closure}}
             at ./src/decoding/format/native_json.rs:143:23
   6: core::ops::function::FnOnce::call_once
             at /private/tmp/rust-20230901-16881-ycyewx/rustc-1.72.0-src/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
test decoding::format::native_json::test::parses_metric ... FAILED

Example Data

No response

Additional Context

No response

References

No response

Metadata

Metadata

Assignees

Labels

type: bugA code related bug.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions