Skip to content

Commit e23624c

Browse files
[stable-25-2] Solomon external data source: new listing algorithm using working api (#28043)
2 parents 568786d + 048cd0a commit e23624c

File tree

13 files changed

+456
-187
lines changed

13 files changed

+456
-187
lines changed

ydb/library/yql/providers/solomon/actors/dq_solomon_metrics_queue.cpp

Lines changed: 158 additions & 99 deletions
Large diffs are not rendered by default.

ydb/library/yql/providers/solomon/common/util.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ struct TTimeseries {
3030
std::vector<double> Values;
3131
};
3232

33+
struct TLabelValues {
34+
TString Name;
35+
bool Absent;
36+
bool Truncated;
37+
std::vector<TString> Values;
38+
};
39+
3340
struct TMetricTimeRange {
3441
TSelectors Selectors;
3542
TString Program;

ydb/library/yql/providers/solomon/provider/yql_solomon_config.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@ TSolomonConfiguration::TSolomonConfiguration()
88
{
99
REGISTER_SETTING(*this, _EnableReading);
1010
REGISTER_SETTING(*this, _EnableRuntimeListing);
11+
REGISTER_SETTING(*this, _EnableSolomonClientPostApi);
1112
REGISTER_SETTING(*this, _TruePointsFindRange);
12-
REGISTER_SETTING(*this, MetricsQueuePageSize);
13-
REGISTER_SETTING(*this, MetricsQueuePrefetchSize);
13+
REGISTER_SETTING(*this, _MaxListingPageSize);
1414
REGISTER_SETTING(*this, MetricsQueueBatchCountLimit);
15-
REGISTER_SETTING(*this, SolomonClientDefaultReplica);
1615
REGISTER_SETTING(*this, ComputeActorBatchSize);
1716
REGISTER_SETTING(*this, MaxApiInflight);
1817
}

ydb/library/yql/providers/solomon/provider/yql_solomon_config.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,10 @@ struct TSolomonSettings {
1212

1313
NCommon::TConfSetting<bool, false> _EnableReading;
1414
NCommon::TConfSetting<bool, false> _EnableRuntimeListing;
15+
NCommon::TConfSetting<bool, false> _EnableSolomonClientPostApi;
1516
NCommon::TConfSetting<ui64, false> _TruePointsFindRange;
16-
NCommon::TConfSetting<ui64, false> MetricsQueuePageSize;
17-
NCommon::TConfSetting<ui64, false> MetricsQueuePrefetchSize;
17+
NCommon::TConfSetting<ui64, false> _MaxListingPageSize;
1818
NCommon::TConfSetting<ui64, false> MetricsQueueBatchCountLimit;
19-
NCommon::TConfSetting<TString, false> SolomonClientDefaultReplica;
2019
NCommon::TConfSetting<ui64, false> ComputeActorBatchSize;
2120
NCommon::TConfSetting<ui64, false> MaxApiInflight;
2221
};

ydb/library/yql/providers/solomon/provider/yql_solomon_dq_integration.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -349,29 +349,24 @@ class TSolomonDqIntegration: public TDqIntegrationBase {
349349
source.AddRequiredLabelNames(labelAsString);
350350
}
351351

352-
auto defaultReplica = (source.GetClusterType() == NSo::NProto::CT_SOLOMON ? "sas" : "cloud-prod-a");
353-
354352
auto& solomonConfig = State_->Configuration;
355353
auto& sourceSettings = *source.MutableSettings();
356354

357-
auto metricsQueuePageSize = solomonConfig->MetricsQueuePageSize.Get().OrElse(2000);
358-
sourceSettings.insert({"metricsQueuePageSize", ToString(metricsQueuePageSize)});
359-
360-
auto metricsQueuePrefetchSize = solomonConfig->MetricsQueuePrefetchSize.Get().OrElse(4000);
361-
sourceSettings.insert({"metricsQueuePrefetchSize", ToString(metricsQueuePrefetchSize)});
362-
363-
auto metricsQueueBatchCountLimit = solomonConfig->MetricsQueueBatchCountLimit.Get().OrElse(10);
355+
auto metricsQueueBatchCountLimit = solomonConfig->MetricsQueueBatchCountLimit.Get().OrElse(500);
364356
sourceSettings.insert({"metricsQueueBatchCountLimit", ToString(metricsQueueBatchCountLimit)});
365357

366-
auto solomonClientDefaultReplica = solomonConfig->SolomonClientDefaultReplica.Get().OrElse(defaultReplica);
367-
sourceSettings.insert({"solomonClientDefaultReplica", ToString(solomonClientDefaultReplica)});
358+
auto enableSolomonClientPostApi = solomonConfig->_EnableSolomonClientPostApi.Get().OrElse(false);
359+
sourceSettings.insert({"enableSolomonClientPostApi", ToString(enableSolomonClientPostApi)});
368360

369361
auto computeActorBatchSize = solomonConfig->ComputeActorBatchSize.Get().OrElse(100);
370362
sourceSettings.insert({"computeActorBatchSize", ToString(computeActorBatchSize)});
371363

372364
auto truePointsFindRange = solomonConfig->_TruePointsFindRange.Get().OrElse(301);
373365
sourceSettings.insert({"truePointsFindRange", ToString(truePointsFindRange)});
374366

367+
auto maxListingPageSize = solomonConfig->_MaxListingPageSize.Get().OrElse(20000);
368+
sourceSettings.insert({"maxListingPageSize", ToString(maxListingPageSize)});
369+
375370
auto maxApiInflight = solomonConfig->MaxApiInflight.Get().OrElse(40);
376371
sourceSettings.insert({"maxApiInflight", ToString(maxApiInflight)});
377372

ydb/library/yql/providers/solomon/provider/yql_solomon_load_meta.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace {
1616
struct TLoadSolomonMetaRequest {
1717
NSo::ISolomonAccessorClient::TPtr SolomonClient;
1818
NThreading::TFuture<NSo::TGetLabelsResponse> LabelNamesRequest;
19-
NThreading::TFuture<NSo::TListMetricsResponse> ListMetricsRequest;
19+
NThreading::TFuture<NSo::TListMetricsLabelsResponse> LabelValuesRequest;
2020
};
2121

2222
TMaybe<TString> ExtractSetting(const TExprNode& settings, const TString& settingName) {
@@ -93,25 +93,24 @@ class TSolomonLoadTableMetadataTransformer : public TGraphTransformerBase {
9393
return TStatus::Error;
9494
}
9595

96-
auto defaultReplica = (source.GetClusterType() == NSo::NProto::CT_SOLOMON ? "sas" : "cloud-prod-a");
97-
auto solomonClientDefaultReplica = State_->Configuration->SolomonClientDefaultReplica.Get().OrElse(defaultReplica);
98-
source.MutableSettings()->insert({ "solomonClientDefaultReplica", ToString(solomonClientDefaultReplica) });
96+
auto enableSolomonClientPostApi = State_->Configuration->_EnableSolomonClientPostApi.Get().OrElse(false);
97+
source.MutableSettings()->insert({ "enableSolomonClientPostApi", ToString(enableSolomonClientPostApi) });
9998

10099
auto providerFactory = CreateCredentialsProviderFactoryForStructuredToken(State_->CredentialsFactory, State_->Configuration->Tokens.at(clusterName));
101100
auto credentialsProvider = providerFactory->CreateProvider();
102101

103102
auto solomonClient = NSo::ISolomonAccessorClient::Make(std::move(source), credentialsProvider);
104103
auto labelNamesFuture = solomonClient->GetLabelNames(selectors, from, to);
105-
auto listMetricsFuture = solomonClient->ListMetrics(selectors, from, to, 30, 0);
104+
auto listMetricsLabelsFuture = solomonClient->ListMetricsLabels(selectors, from, to);
106105

107106
LabelNamesRequests_[soReadObject.Raw()] = {
108107
.SolomonClient = solomonClient,
109108
.LabelNamesRequest = labelNamesFuture,
110-
.ListMetricsRequest = listMetricsFuture
109+
.LabelValuesRequest = listMetricsLabelsFuture
111110
};
112111

113112
futures.push_back(labelNamesFuture.IgnoreResult());
114-
futures.push_back(listMetricsFuture.IgnoreResult());
113+
futures.push_back(listMetricsLabelsFuture.IgnoreResult());
115114
}
116115
}
117116

@@ -142,10 +141,10 @@ class TSolomonLoadTableMetadataTransformer : public TGraphTransformerBase {
142141
return TStatus::Error;
143142
}
144143

145-
auto listMetricsValue = request.ListMetricsRequest.GetValue();
146-
if (listMetricsValue.Status != NSo::EStatus::STATUS_OK) {
144+
auto listMetricLabelsValue = request.LabelValuesRequest.GetValue();
145+
if (listMetricLabelsValue.Status != NSo::EStatus::STATUS_OK) {
147146
ctx.AddError(TIssue(ctx.GetPosition(node->Pos()),
148-
TStringBuilder() << "Failed to get total metrics count, details: " << listMetricsValue.Error));
147+
TStringBuilder() << "Failed to get total metrics count, details: " << listMetricLabelsValue.Error));
149148
return TStatus::Error;
150149
}
151150

@@ -161,7 +160,7 @@ class TSolomonLoadTableMetadataTransformer : public TGraphTransformerBase {
161160
.RequiredLabelNames()
162161
.Add(labelNames)
163162
.Build()
164-
.TotalMetricsCount<TCoAtom>().Build(ToString(listMetricsValue.Result.TotalCount))
163+
.TotalMetricsCount<TCoAtom>().Build(ToString(listMetricLabelsValue.Result.TotalCount))
165164
.Done().Ptr());
166165
}
167166

0 commit comments

Comments
 (0)