Skip to content

Commit 0dfe76b

Browse files
fixed issues
1 parent b760321 commit 0dfe76b

File tree

8 files changed

+60
-55
lines changed

8 files changed

+60
-55
lines changed

ydb/core/kqp/host/kqp_host.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1893,6 +1893,7 @@ class TKqpHost : public IKqpHost {
18931893
solomonState->Gateway = FederatedQuerySetup->SolomonGateway;
18941894
solomonState->DqIntegration = NYql::CreateSolomonDqIntegration(solomonState);
18951895
solomonState->Configuration->Init(FederatedQuerySetup->SolomonGatewayConfig, TypesCtx);
1896+
solomonState->ExecutorPoolId = AppData()->UserPoolId;
18961897

18971898
TypesCtx->AddDataSource(NYql::SolomonProviderName, NYql::CreateSolomonDataSource(solomonState));
18981899
TypesCtx->AddDataSink(NYql::SolomonProviderName, NYql::CreateSolomonDataSink(solomonState));

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

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626

2727
namespace NYql::NDq {
2828

29+
namespace {
30+
2931
class TDqSolomonMetricsQueueActor : public NActors::TActorBootstrapped<TDqSolomonMetricsQueueActor> {
3032
public:
3133
static constexpr char ActorName[] = "DQ_SOLOMON_METRICS_QUEUE_ACTOR";
@@ -75,9 +77,8 @@ class TDqSolomonMetricsQueueActor : public NActors::TActorBootstrapped<TDqSolomo
7577
, BatchCountLimit(batchCountLimit)
7678
, ReadParams(std::move(readParams))
7779
, CredentialsProvider(credentialsProvider)
78-
{
79-
SolomonClient = NSo::ISolomonAccessorClient::Make(ReadParams.Source, CredentialsProvider);
80-
}
80+
, SolomonClient(NSo::ISolomonAccessorClient::Make(readParams.Source, credentialsProvider))
81+
{}
8182

8283
void Bootstrap() {
8384
Schedule(PoisonTimeout, new NActors::TEvents::TEvPoison());
@@ -125,7 +126,7 @@ class TDqSolomonMetricsQueueActor : public NActors::TActorBootstrapped<TDqSolomo
125126
STATEFN(AnErrorOccurredState) {
126127
try {
127128
switch (const auto etype = ev->GetTypeRewrite()) {
128-
hFunc(TEvSolomonProvider::TEvGetNextBatch, );
129+
hFunc(TEvSolomonProvider::TEvGetNextBatch, HandleGetNextBatchForErrorState);
129130
cFunc(TEvPrivatePrivate::EvRoundRobinStageTimeout, HandleRoundRobinStageTimeout);
130131
cFunc(NActors::TEvents::TSystem::Poison, HandlePoison);
131132
default:
@@ -171,7 +172,7 @@ class TDqSolomonMetricsQueueActor : public NActors::TActorBootstrapped<TDqSolomo
171172
}
172173

173174
void HandleRoundRobinStageTimeout() {
174-
LOG_T("TDqSolomonMetricsQueueActor","Handle round robin stage timeout");
175+
LOG_T("TDqSolomonMetricsQueueActor", "Handle round robin stage timeout");
175176
if (!RoundRobinStageFinished) {
176177
RoundRobinStageFinished = true;
177178
AnswerPendingRequests();
@@ -189,12 +190,12 @@ class TDqSolomonMetricsQueueActor : public NActors::TActorBootstrapped<TDqSolomo
189190
}
190191

191192
void HandleGetNextBatchForEmptyState(TEvSolomonProvider::TEvGetNextBatch::TPtr& ev) {
192-
LOG_T("TDqSolomonMetricsQueueActor", "HandleGetNextBatchForEmptyState Giving away rest of Objects");
193+
LOG_T("TDqSolomonMetricsQueueActor", "HandleGetNextBatchForEmptyState giving away rest of Objects");
193194
TrySendMetrics(ev->Sender, ev->Get()->Record.GetTransportMeta());
194195
}
195196

196197
void HandleGetNextBatchForErrorState(TEvSolomonProvider::TEvGetNextBatch::TPtr& ev) {
197-
LOG_D("TDqSolomonMetricsQueueActor", "HandleGetNextBatchForErrorState Sending issues");
198+
LOG_D("TDqSolomonMetricsQueueActor", "HandleGetNextBatchForErrorState sending issues");
198199
Send(ev->Sender, new TEvSolomonProvider::TEvMetricsReadError(*MaybeIssues, ev->Get()->Record.GetTransportMeta()));
199200
TryFinish(ev->Sender, ev->Get()->Record.GetTransportMeta().GetSeqNo());
200201
}
@@ -206,7 +207,7 @@ class TDqSolomonMetricsQueueActor : public NActors::TActorBootstrapped<TDqSolomo
206207

207208
void TransitToErrorState() {
208209
Y_ENSURE(MaybeIssues.Defined());
209-
LOG_I("TDqSolomonMetricsQueueActor", "TransitToErrorState an error occurred sending ");
210+
LOG_I("TDqSolomonMetricsQueueActor", "TransitToErrorState an error occurred, sending issues");
210211
AnswerPendingRequests();
211212
Metrics.clear();
212213
Become(&TDqSolomonMetricsQueueActor::AnErrorOccurredState);
@@ -306,16 +307,12 @@ class TDqSolomonMetricsQueueActor : public NActors::TActorBootstrapped<TDqSolomo
306307
}
307308
}
308309

309-
bool isEmpty = true;
310310
for (const auto& [consumer, requests] : PendingRequests) {
311311
if (!requests.empty()) {
312-
isEmpty = false;
312+
HasPendingRequests = true;
313+
break;
313314
}
314315
}
315-
316-
if (isEmpty) {
317-
HasPendingRequests = false;
318-
}
319316
}
320317
}
321318

@@ -372,9 +369,9 @@ class TDqSolomonMetricsQueueActor : public NActors::TActorBootstrapped<TDqSolomo
372369

373370
void TryFinish(const NActors::TActorId& consumer, ui64 seqNo) {
374371
LOG_T("TDqSolomonMetricsQueueActor", "TryFinish from consumer " << consumer << ", " << FinishedConsumers.size() << " consumers already finished, seqNo=" << seqNo);
375-
if (FinishingConsumerToLastSeqNo.contains(consumer)) {
372+
if (auto it = FinishingConsumerToLastSeqNo.find(consumer); it != FinishingConsumerToLastSeqNo.end()) {
376373
LOG_T("TDqSolomonMetricsQueueActor", "TryFinish FinishingConsumerToLastSeqNo=" << FinishingConsumerToLastSeqNo[consumer]);
377-
if (FinishingConsumerToLastSeqNo[consumer] < seqNo || SelfId().NodeId() == consumer.NodeId()) {
374+
if (it->second < seqNo || SelfId().NodeId() == consumer.NodeId()) {
378375
FinishedConsumers.insert(consumer);
379376
if (FinishedConsumers.size() == ConsumersCount) {
380377
PassAway();
@@ -395,29 +392,32 @@ class TDqSolomonMetricsQueueActor : public NActors::TActorBootstrapped<TDqSolomo
395392
THashSet<NActors::TActorId> FinishedConsumers;
396393
THashMap<NActors::TActorId, ui64> FinishingConsumerToLastSeqNo;
397394

398-
NSo::ISolomonAccessorClient::TPtr SolomonClient;
399395
TMaybe<NThreading::TFuture<NSo::ISolomonAccessorClient::TListMetricsResult>> ListingFuture;
400396
bool HasPendingRequests;
401397
THashMap<NActors::TActorId, TDeque<NDqProto::TMessageTransportMeta>> PendingRequests;
402398
std::vector<NSo::MetricQueue::TMetricLabels> Metrics;
403399
TMaybe<TString> MaybeIssues;
404-
400+
405401
ui64 PageSize;
406402
ui64 PrefetchSize;
407403
ui64 BatchCountLimit;
408404
const TDqSolomonReadParams ReadParams;
409405
const std::shared_ptr<NYdb::ICredentialsProvider> CredentialsProvider;
406+
const NSo::ISolomonAccessorClient::TPtr SolomonClient;
410407

411408
static constexpr TDuration PoisonTimeout = TDuration::Hours(3);
412409
static constexpr TDuration RoundRobinStageTimeout = TDuration::Seconds(3);
413410
};
414411

412+
413+
} // namespace
414+
415415
NActors::IActor* CreateSolomonMetricsQueueActor(
416416
ui64 consumersCount,
417417
TDqSolomonReadParams readParams,
418418
std::shared_ptr<NYdb::ICredentialsProvider> credentialsProvider)
419419
{
420-
auto& settings = readParams.Source.settings();
420+
const auto& settings = readParams.Source.settings();
421421

422422
ui64 pageSize = 0;
423423
if (auto it = settings.find("metricsQueuePageSize"); it != settings.end()) {

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

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,21 @@
4040
#include <util/generic/hash.h>
4141
#include <util/system/compiler.h>
4242

43-
#define SINK_LOG_T(s) \
43+
#define SOURCE_LOG_T(s) \
4444
LOG_TRACE_S(*NActors::TlsActivationContext, NKikimrServices::KQP_COMPUTE, LogPrefix << s)
45-
#define SINK_LOG_D(s) \
45+
#define SOURCE_LOG_D(s) \
4646
LOG_DEBUG_S(*NActors::TlsActivationContext, NKikimrServices::KQP_COMPUTE, LogPrefix << s)
47-
#define SINK_LOG_I(s) \
47+
#define SOURCE_LOG_I(s) \
4848
LOG_INFO_S(*NActors::TlsActivationContext, NKikimrServices::KQP_COMPUTE, LogPrefix << s)
49-
#define SINK_LOG_W(s) \
49+
#define SOURCE_LOG_W(s) \
5050
LOG_WARN_S(*NActors::TlsActivationContext, NKikimrServices::KQP_COMPUTE, LogPrefix << s)
51-
#define SINK_LOG_N(s) \
51+
#define SOURCE_LOG_N(s) \
5252
LOG_NOTICE_S(*NActors::TlsActivationContext, NKikimrServices::KQP_COMPUTE, LogPrefix << s)
53-
#define SINK_LOG_E(s) \
53+
#define SOURCE_LOG_E(s) \
5454
LOG_ERROR_S(*NActors::TlsActivationContext, NKikimrServices::KQP_COMPUTE, LogPrefix << s)
55-
#define SINK_LOG_C(s) \
55+
#define SOURCE_LOG_C(s) \
5656
LOG_CRIT_S(*NActors::TlsActivationContext, NKikimrServices::KQP_COMPUTE, LogPrefix << s)
57-
#define SINK_LOG(prio, s) \
57+
#define SOURCE_LOG(prio, s) \
5858
LOG_LOG_S(*NActors::TlsActivationContext, prio, NKikimrServices::KQP_COMPUTE, LogPrefix << s)
5959

6060
namespace NYql::NDq {
@@ -87,9 +87,6 @@ auto RetryPolicy = NYql::NDq::THttpSenderRetryPolicy::GetExponentialBackoffPolic
8787
return ERetryErrorClass::ShortRetry;
8888
});
8989

90-
} // namespace
91-
92-
9390
class TDqSolomonReadActor : public NActors::TActorBootstrapped<TDqSolomonReadActor>, public IDqComputeActorAsyncInput {
9491
public:
9592
static constexpr char ActorName[] = "DQ_SOLOMON_READ_ACTOR";
@@ -117,21 +114,21 @@ class TDqSolomonReadActor : public NActors::TActorBootstrapped<TDqSolomonReadAct
117114
, MaxInflightDataRequests(maxInflightDataRequests)
118115
, MetricsQueueActor(metricsQueueActor)
119116
, CredentialsProvider(credentialsProvider)
117+
, SolomonClient(NSo::ISolomonAccessorClient::Make(readParams.Source, credentialsProvider))
120118
{
121119
Y_UNUSED(counters);
122-
SINK_LOG_D("Init");
120+
SOURCE_LOG_D("Init");
123121
IngressStats.Level = statsLevel;
124122

125-
SolomonClient = NSo::ISolomonAccessorClient::Make(ReadParams.Source, CredentialsProvider);
126123
UseMetricsQueue = ReadParams.Source.HasSelectors();
127124

128125
auto stringType = ProgramBuilder.NewDataType(NYql::NUdf::TDataType<char*>::Id);
129126
DictType = ProgramBuilder.NewDictType(stringType, stringType, false);
130127

131-
FillSystemColumnPositionindex();
128+
FillSystemColumnPositionIndex();
132129
}
133130

134-
void FillSystemColumnPositionindex() {
131+
void FillSystemColumnPositionIndex() {
135132
std::vector<TString> names(ReadParams.Source.GetSystemColumns().begin(), ReadParams.Source.GetSystemColumns().end());
136133
names.insert(names.end(), ReadParams.Source.GetLabelNames().begin(), ReadParams.Source.GetLabelNames().end());
137134
std::sort(names.begin(), names.end());
@@ -172,21 +169,21 @@ class TDqSolomonReadActor : public NActors::TActorBootstrapped<TDqSolomonReadAct
172169
auto& batch = metricsBatch->Get()->Record;
173170
IsMetricsQueueEmpty = batch.GetNoMoreMetrics();
174171
if (IsMetricsQueueEmpty && !IsConfirmedMetricsQueueFinish) {
175-
SINK_LOG_D("HandleMetricsBatch MetricsQueue empty, sending finish confirmation");
172+
SOURCE_LOG_D("HandleMetricsBatch MetricsQueue empty, sending finish confirmation");
176173
RequestMetrics();
177174
IsConfirmedMetricsQueueFinish = true;
178175
}
179176

180177
auto& metrics = batch.GetMetrics();
181178

182-
SINK_LOG_D("HandleMetricsBatch batch of size " << metrics.size());
179+
SOURCE_LOG_D("HandleMetricsBatch batch of size " << metrics.size());
183180
Metrics.insert(Metrics.end(), metrics.begin(), metrics.end());
184181
ListedMetrics += metrics.size();
185182

186183
while (TryRequestData()) {}
187184

188185
if (LastMetricProcessed()) {
189-
Send(ComputeActorId, new TEvNewAsyncInputDataArrived(InputIndex));
186+
NotifyComputeActorWithData();
190187
}
191188
}
192189

@@ -197,13 +194,13 @@ class TDqSolomonReadActor : public NActors::TActorBootstrapped<TDqSolomonReadAct
197194

198195
IsMetricsQueueEmpty = true;
199196
if (!IsConfirmedMetricsQueueFinish) {
200-
SINK_LOG_D("HandleMetricsReadError sending finish confirmation to MetricsQueue");
197+
SOURCE_LOG_D("HandleMetricsReadError sending finish confirmation to MetricsQueue");
201198
RequestMetrics();
202199
IsConfirmedMetricsQueueFinish = true;
203200
}
204201

205202
TIssues issues { TIssue(metricsReadError->Get()->Record.GetIssues()) };
206-
SINK_LOG_W("Got " << "error response[" << metricsReadError->Cookie << "] from solomon: " << issues.ToOneLineString());
203+
SOURCE_LOG_W("Got " << "error response[" << metricsReadError->Cookie << "] from solomon: " << issues.ToOneLineString());
207204
Send(ComputeActorId, new TEvAsyncInputError(InputIndex, issues, NYql::NDqProto::StatusIds::EXTERNAL_ERROR));
208205
return;
209206
}
@@ -214,35 +211,35 @@ class TDqSolomonReadActor : public NActors::TActorBootstrapped<TDqSolomonReadAct
214211

215212
if (!batch.Success) {
216213
TIssues issues { TIssue(batch.ErrorMsg) };
217-
SINK_LOG_W("Got " << "error response[" << newDataBatch->Cookie << "] from solomon: " << issues.ToOneLineString());
214+
SOURCE_LOG_W("Got " << "error response[" << newDataBatch->Cookie << "] from solomon: " << issues.ToOneLineString());
218215
Send(ComputeActorId, new TEvAsyncInputError(InputIndex, issues, NYql::NDqProto::StatusIds::EXTERNAL_ERROR));
219216
return;
220217
}
221218

222-
SINK_LOG_D("HandleNewDataBatch new data batch");
219+
SOURCE_LOG_D("HandleNewDataBatch new data batch");
223220
MetricsData.insert(MetricsData.end(), batch.Result.begin(), batch.Result.end());
224221
CompletedMetrics += batch.Result.size();
225222

226223
NotifyComputeActorWithData();
227224
}
228225

229226
void Handle(const NYql::NDq::TEvRetryQueuePrivate::TEvRetry::TPtr&) {
230-
SINK_LOG_D("Handle MetricsQueue retry");
227+
SOURCE_LOG_D("Handle MetricsQueue retry");
231228
MetricsQueueEvents.Retry();
232229
}
233230

234231
void Handle(NActors::TEvInterconnect::TEvNodeDisconnected::TPtr& ev) {
235-
SINK_LOG_D("Handle MetricsQueue disconnected " << ev->Get()->NodeId);
232+
SOURCE_LOG_D("Handle MetricsQueue disconnected " << ev->Get()->NodeId);
236233
MetricsQueueEvents.HandleNodeDisconnected(ev->Get()->NodeId);
237234
}
238235

239236
void Handle(NActors::TEvInterconnect::TEvNodeConnected::TPtr& ev) {
240-
SINK_LOG_D("Handle MetricsQueue connected " << ev->Get()->NodeId);
237+
SOURCE_LOG_D("Handle MetricsQueue connected " << ev->Get()->NodeId);
241238
MetricsQueueEvents.HandleNodeConnected(ev->Get()->NodeId);
242239
}
243240

244241
void Handle(NActors::TEvents::TEvUndelivered::TPtr& ev) {
245-
SINK_LOG_D("Handle MetricsQueue undelivered ");
242+
SOURCE_LOG_D("Handle MetricsQueue undelivered");
246243
if (MetricsQueueEvents.HandleUndelivered(ev) != NYql::NDq::TRetryEventsQueue::ESessionState::WrongSession) {
247244
TIssues issues{TIssue{TStringBuilder() << "MetricsQueue was lost"}};
248245
Send(ComputeActorId, new TEvAsyncInputError(InputIndex, issues, NYql::NDqProto::StatusIds::UNAVAILABLE));
@@ -252,7 +249,7 @@ class TDqSolomonReadActor : public NActors::TActorBootstrapped<TDqSolomonReadAct
252249
i64 GetAsyncInputData(TUnboxedValueBatch& buffer, TMaybe<TInstant>&, bool& finished, i64 freeSpace) final {
253250
Y_UNUSED(freeSpace);
254251
YQL_ENSURE(!buffer.IsWide(), "Wide stream is not supported");
255-
SINK_LOG_D("GetAsyncInputData sending data");
252+
SOURCE_LOG_D("GetAsyncInputData sending data");
256253

257254
for (const auto& data : MetricsData) {
258255
auto& labels = data.Labels;
@@ -323,7 +320,7 @@ class TDqSolomonReadActor : public NActors::TActorBootstrapped<TDqSolomonReadAct
323320
private:
324321
// IActor & IDqComputeActorAsyncInput
325322
void PassAway() override { // Is called from Compute Actor
326-
SINK_LOG_D("PassAway");
323+
SOURCE_LOG_D("PassAway");
327324
TActor<TDqSolomonReadActor>::PassAway();
328325
}
329326

@@ -418,7 +415,6 @@ class TDqSolomonReadActor : public NActors::TActorBootstrapped<TDqSolomonReadAct
418415
const ui64 MaxInflightDataRequests;
419416

420417
bool UseMetricsQueue;
421-
NSo::ISolomonAccessorClient::TPtr SolomonClient;
422418
TRetryEventsQueue MetricsQueueEvents;
423419
NActors::TActorId MetricsQueueActor;
424420
bool IsWaitingMetricsQueueResponse = false;
@@ -433,11 +429,15 @@ class TDqSolomonReadActor : public NActors::TActorBootstrapped<TDqSolomonReadAct
433429

434430
TString SourceId;
435431
std::shared_ptr<NYdb::ICredentialsProvider> CredentialsProvider;
432+
NSo::ISolomonAccessorClient::TPtr SolomonClient;
436433
TType* DictType = nullptr;
437434
std::vector<size_t> SystemColumnPositionIndex;
438435
THashMap<TString, size_t> Index;
439436
};
440437

438+
439+
} // namespace
440+
441441
std::pair<NYql::NDq::IDqComputeActorAsyncInput*, NActors::IActor*> CreateDqSolomonReadActor(
442442
NYql::NSo::NProto::TDqSolomonSource&& source,
443443
ui64 inputIndex,

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ struct TMetricsInflight {
8787
ui64 BodySize = 0;
8888
};
8989

90-
} // namespace
91-
9290
TString GetSolomonUrl(const TString& endpoint, bool useSsl, const TString& project, const TString& cluster, const TString& service, const ::NYql::NSo::NProto::ESolomonClusterType& type) {
9391
TUrlBuilder builder((useSsl ? "https://" : "http://") + endpoint);
9492

@@ -501,6 +499,9 @@ class TDqSolomonWriteActor : public NActors::TActor<TDqSolomonWriteActor>, publi
501499
ui64 Cookie = 0;
502500
};
503501

502+
503+
} // namespace
504+
504505
std::pair<NYql::NDq::IDqComputeActorAsyncOutput*, NActors::IActor*> CreateDqSolomonWriteActor(
505506
NYql::NSo::NProto::TDqSolomonShard&& settings,
506507
ui64 outputIndex,

ydb/library/yql/providers/solomon/events/events.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,17 @@ struct TEvSolomonProvider {
3636
metrics.begin(),
3737
metrics.end());
3838
Record.SetNoMoreMetrics(noMoreMetrics);
39-
Record.MutableTransportMeta()->CopyFrom(transportMeta);
39+
*Record.MutableTransportMeta() = transportMeta;
4040
}
4141
};
4242

4343
struct TEvMetricsReadError:
4444
public NActors::TEventPB<TEvMetricsReadError, NSo::MetricQueue::TEvMetricsReadError, EvMetricsReadError> {
4545

4646
TEvMetricsReadError() = default;
47-
TEvMetricsReadError(const TString &issues, const NDqProto::TMessageTransportMeta& transportMeta) {
47+
TEvMetricsReadError(const TString& issues, const NDqProto::TMessageTransportMeta& transportMeta) {
4848
Record.SetIssues(issues);
49-
Record.MutableTransportMeta()->CopyFrom(transportMeta);
49+
*Record.MutableTransportMeta() = transportMeta;
5050
}
5151
};
5252

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,9 @@ class TSolomonDqIntegration: public TDqIntegrationBase {
329329
maxPartitions,
330330
readParams,
331331
credentialsProvider
332-
)
332+
),
333+
NActors::TMailboxType::HTSwap,
334+
State_->ExecutorPoolId
333335
);
334336

335337
NActorsProto::TActorId protoId;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ struct TSolomonState : public TThrRefBase
2828
ISecuredServiceAccountCredentialsFactory::TPtr CredentialsFactory;
2929
TSolomonConfiguration::TPtr Configuration = MakeIntrusive<TSolomonConfiguration>();
3030
THolder<IDqIntegration> DqIntegration;
31+
ui32 ExecutorPoolId = 0;
3132
};
3233

3334
TDataProviderInitializer GetSolomonDataProviderInitializer(ISolomonGateway::TPtr gateway, ISecuredServiceAccountCredentialsFactory::TPtr credentialsFactory = nullptr, bool supportRtmrMode = true);

ydb/library/yql/providers/solomon/solomon_accessor/client/solomon_accessor_client.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ ISolomonAccessorClient::Make(
365365
const NYql::NSo::NProto::TDqSolomonSource& source,
366366
std::shared_ptr<NYdb::ICredentialsProvider> credentialsProvider)
367367
{
368-
auto& settings = source.settings();
368+
const auto& settings = source.settings();
369369

370370
TString defaultReplica = "sas";
371371
if (auto it = settings.find("solomonClientDefaultReplica"); it != settings.end()) {

0 commit comments

Comments
 (0)