diff options
author | Alexander Smirnov <alex@ydb.tech> | 2025-03-07 00:51:42 +0000 |
---|---|---|
committer | Alexander Smirnov <alex@ydb.tech> | 2025-03-07 00:51:42 +0000 |
commit | 26f81abb45fa0b914da68e22b79c4b8ba8ac105b (patch) | |
tree | 2dd0455697e85b89272f2d4197703cb92f33958e /library/cpp/monlib/encode/json/json_decoder.cpp | |
parent | 98be31c26bacbdc98081620b680a520f0bd0246f (diff) | |
parent | 9b0a13bddce49bfb5ea59d8c4a668d32d7dada3b (diff) | |
download | ydb-26f81abb45fa0b914da68e22b79c4b8ba8ac105b.tar.gz |
Merge branch 'rightlib' into merge-libs-250307-0050
Diffstat (limited to 'library/cpp/monlib/encode/json/json_decoder.cpp')
-rw-r--r-- | library/cpp/monlib/encode/json/json_decoder.cpp | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/library/cpp/monlib/encode/json/json_decoder.cpp b/library/cpp/monlib/encode/json/json_decoder.cpp index 37189900759..801ff0833d2 100644 --- a/library/cpp/monlib/encode/json/json_decoder.cpp +++ b/library/cpp/monlib/encode/json/json_decoder.cpp @@ -193,6 +193,7 @@ struct TMetricCollector { TLogHistogramBuilder LogHistBuilder; TTypedPoint LastPoint; TVector<TTypedPoint> TimeSeries; + bool IsMemOnly = false; bool SeenTsOrValue = false; bool SeenTimeseries = false; @@ -207,6 +208,7 @@ struct TMetricCollector { HistogramBuilder.Clear(); SummaryBuilder.Clear(); LogHistBuilder.Clear(); + IsMemOnly = false; } void AddLabel(const TLabel& label) { @@ -222,6 +224,10 @@ struct TMetricCollector { LastPoint.SetValue(value); } + void SetMemOnly(bool isMemOnly) { + IsMemOnly = isMemOnly; + } + void SaveLastPoint() { DECODE_ENSURE(LastPoint.GetTime() != TInstant::Zero(), "cannot add point without or zero timestamp"); @@ -419,6 +425,10 @@ private: Consumer_->OnSummaryDouble(time, std::move(snapshot)); } + void OnMemOnly(bool isMemOnly) override{ + Consumer_->OnMemOnly(isMemOnly); + } + private: const TCommonParts CommonParts_; IMetricConsumer* Consumer_; @@ -442,6 +452,7 @@ class TDecoderJson final: public NJson::TJsonCallbacks { METRIC_LABELS, METRIC_TYPE, METRIC_MODE, // TODO: must be deleted + METRIC_MEMONLY, METRIC_TIMESERIES, METRIC_TS, METRIC_VALUE, @@ -858,7 +869,7 @@ if (Y_UNLIKELY(!(CONDITION))) { \ } else if (key == TStringBuf("log_hist")) { State_.ToNext(TState::METRIC_LOG_HIST); } else if (key == TStringBuf("memOnly")) { - // deprecated. Skip it without errors for backward compatibility + State_.ToNext(TState::METRIC_MEMONLY); } else { ErrorMsg_ = TStringBuilder() << "unexpected key \"" << key << "\" in a metric schema"; return false; @@ -1033,6 +1044,18 @@ if (Y_UNLIKELY(!(CONDITION))) { \ return true; } + bool OnBoolean(bool value) override { + switch (State_.Current()) { + case TState::METRIC_MEMONLY: + LastMetric_.IsMemOnly = value; + State_.ToPrev(); + break; + default: + return false; + } + return true; + } + void ConsumeMetric() { // for backwad compatibility all unknown metrics treated as gauges if (LastMetric_.Type == EMetricType::UNKNOWN) { @@ -1055,7 +1078,12 @@ if (Y_UNLIKELY(!(CONDITION))) { \ MetricConsumer_->OnLabelsEnd(); } - // (3) values + // (3) flags + if (LastMetric_.IsMemOnly) { + MetricConsumer_->OnMemOnly(true); + } + + // (4) values switch (LastMetric_.Type) { case EMetricType::GAUGE: LastMetric_.Consume([this](TInstant time, EMetricValueType valueType, TMetricValue value) { |