aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/monlib/encode/json/json_decoder.cpp
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2025-03-07 00:51:42 +0000
committerAlexander Smirnov <alex@ydb.tech>2025-03-07 00:51:42 +0000
commit26f81abb45fa0b914da68e22b79c4b8ba8ac105b (patch)
tree2dd0455697e85b89272f2d4197703cb92f33958e /library/cpp/monlib/encode/json/json_decoder.cpp
parent98be31c26bacbdc98081620b680a520f0bd0246f (diff)
parent9b0a13bddce49bfb5ea59d8c4a668d32d7dada3b (diff)
downloadydb-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.cpp32
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) {