Skip to content

Commit 70035f4

Browse files
authored
YQL-17542 split FillIoMaps (#1537)
1 parent 205480d commit 70035f4

File tree

3 files changed

+61
-52
lines changed

3 files changed

+61
-52
lines changed

ydb/library/yql/dq/actors/compute/dq_async_compute_actor.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ class TDqAsyncComputeActor : public TDqComputeActorBase<TDqAsyncComputeActor, TC
471471
Stat->AddCounters2(ev->Get()->Sensors);
472472
}
473473
TypeEnv = const_cast<NKikimr::NMiniKQL::TTypeEnvironment*>(&typeEnv);
474-
FillIoMaps(holderFactory, typeEnv, secureParams, taskParams, readRanges);
474+
FillIoMaps(holderFactory, typeEnv, secureParams, taskParams, readRanges, nullptr);
475475

476476
{
477477
// say "Hello" to executer

ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h

+28-46
Original file line numberDiff line numberDiff line change
@@ -1441,19 +1441,12 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
14411441
const NKikimr::NMiniKQL::TTypeEnvironment& typeEnv,
14421442
const THashMap<TString, TString>& secureParams,
14431443
const THashMap<TString, TString>& taskParams,
1444-
const TVector<TString>& readRanges)
1444+
const TVector<TString>& readRanges,
1445+
IRandomProvider* randomProvider
1446+
)
14451447
{
1446-
if (TaskRunner) {
1447-
for (auto& [channelId, channel] : InputChannelsMap) {
1448-
channel.Channel = TaskRunner->GetInputChannel(channelId);
1449-
}
1450-
}
14511448
auto collectStatsLevel = StatsModeToCollectStatsLevel(RuntimeSettings.StatsMode);
14521449
for (auto& [inputIndex, source] : SourcesMap) {
1453-
if constexpr (!TDerived::HasAsyncTaskRunner) {
1454-
source.Buffer = TaskRunner->GetSource(inputIndex);
1455-
Y_ABORT_UNLESS(source.Buffer);
1456-
}
14571450
Y_ABORT_UNLESS(AsyncIoFactory);
14581451
const auto& inputDesc = Task.GetInputs(inputIndex);
14591452
Y_ABORT_UNLESS(inputDesc.HasSource());
@@ -1487,9 +1480,8 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
14871480
this->RegisterWithSameMailbox(source.Actor);
14881481
}
14891482
for (auto& [inputIndex, transform] : InputTransformsMap) {
1490-
if constexpr (!TDerived::HasAsyncTaskRunner) {
1491-
transform.ProgramBuilder.ConstructInPlace(TaskRunner->GetTypeEnv(), *FunctionRegistry);
1492-
std::tie(transform.InputBuffer, transform.Buffer) = TaskRunner->GetInputTransform(inputIndex);
1483+
Y_ABORT_UNLESS(TaskRunner);
1484+
transform.ProgramBuilder.ConstructInPlace(typeEnv, *FunctionRegistry);
14931485
Y_ABORT_UNLESS(AsyncIoFactory);
14941486
const auto& inputDesc = Task.GetInputs(inputIndex);
14951487
CA_LOG_D("Create transform for input " << inputIndex << " " << inputDesc.ShortDebugString());
@@ -1515,43 +1507,33 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
15151507
throw yexception() << "Failed to create input transform " << inputDesc.GetTransform().GetType() << ": " << ex.what();
15161508
}
15171509
this->RegisterWithSameMailbox(transform.Actor);
1518-
}
1519-
}
1520-
if (TaskRunner) {
1521-
for (auto& [channelId, channel] : OutputChannelsMap) {
1522-
channel.Channel = TaskRunner->GetOutputChannel(channelId);
1523-
}
15241510
}
15251511
for (auto& [outputIndex, transform] : OutputTransformsMap) {
1526-
if (TaskRunner) {
1527-
transform.ProgramBuilder.ConstructInPlace(TaskRunner->GetTypeEnv(), *FunctionRegistry);
1528-
std::tie(transform.Buffer, transform.OutputBuffer) = TaskRunner->GetOutputTransform(outputIndex);
1529-
Y_ABORT_UNLESS(AsyncIoFactory);
1530-
const auto& outputDesc = Task.GetOutputs(outputIndex);
1531-
CA_LOG_D("Create transform for output " << outputIndex << " " << outputDesc.ShortDebugString());
1532-
try {
1533-
std::tie(transform.AsyncOutput, transform.Actor) = AsyncIoFactory->CreateDqOutputTransform(
1534-
IDqAsyncIoFactory::TOutputTransformArguments {
1535-
.OutputDesc = outputDesc,
1536-
.OutputIndex = outputIndex,
1537-
.StatsLevel = collectStatsLevel,
1538-
.TxId = TxId,
1539-
.TransformOutput = transform.OutputBuffer,
1540-
.Callback = static_cast<TOutputTransformCallbacks*>(this),
1541-
.SecureParams = secureParams,
1542-
.TaskParams = taskParams,
1543-
.TypeEnv = typeEnv,
1544-
.HolderFactory = holderFactory,
1545-
.ProgramBuilder = *transform.ProgramBuilder
1546-
});
1547-
} catch (const std::exception& ex) {
1548-
throw yexception() << "Failed to create output transform " << outputDesc.GetTransform().GetType() << ": " << ex.what();
1549-
}
1550-
this->RegisterWithSameMailbox(transform.Actor);
1512+
transform.ProgramBuilder.ConstructInPlace(typeEnv, *FunctionRegistry);
1513+
Y_ABORT_UNLESS(AsyncIoFactory);
1514+
const auto& outputDesc = Task.GetOutputs(outputIndex);
1515+
CA_LOG_D("Create transform for output " << outputIndex << " " << outputDesc.ShortDebugString());
1516+
try {
1517+
std::tie(transform.AsyncOutput, transform.Actor) = AsyncIoFactory->CreateDqOutputTransform(
1518+
IDqAsyncIoFactory::TOutputTransformArguments {
1519+
.OutputDesc = outputDesc,
1520+
.OutputIndex = outputIndex,
1521+
.StatsLevel = collectStatsLevel,
1522+
.TxId = TxId,
1523+
.TransformOutput = transform.OutputBuffer,
1524+
.Callback = static_cast<TOutputTransformCallbacks*>(this),
1525+
.SecureParams = secureParams,
1526+
.TaskParams = taskParams,
1527+
.TypeEnv = typeEnv,
1528+
.HolderFactory = holderFactory,
1529+
.ProgramBuilder = *transform.ProgramBuilder
1530+
});
1531+
} catch (const std::exception& ex) {
1532+
throw yexception() << "Failed to create output transform " << outputDesc.GetTransform().GetType() << ": " << ex.what();
15511533
}
1534+
this->RegisterWithSameMailbox(transform.Actor);
15521535
}
15531536
for (auto& [outputIndex, sink] : SinksMap) {
1554-
if (TaskRunner) { sink.Buffer = TaskRunner->GetSink(outputIndex); }
15551537
Y_ABORT_UNLESS(AsyncIoFactory);
15561538
const auto& outputDesc = Task.GetOutputs(outputIndex);
15571539
Y_ABORT_UNLESS(outputDesc.HasSink());
@@ -1569,7 +1551,7 @@ class TDqComputeActorBase : public NActors::TActorBootstrapped<TDerived>
15691551
.TaskParams = taskParams,
15701552
.TypeEnv = typeEnv,
15711553
.HolderFactory = holderFactory,
1572-
.RandomProvider = TaskRunner ? TaskRunner->GetRandomProvider() : nullptr
1554+
.RandomProvider = randomProvider
15731555
});
15741556
} catch (const std::exception& ex) {
15751557
throw yexception() << "Failed to create sink " << outputDesc.GetSink().GetType() << ": " << ex.what();

ydb/library/yql/dq/actors/compute/dq_sync_compute_actor_base.h

+32-5
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,39 @@ class TDqSyncComputeActorBase: public TDqComputeActorBase<TDerived, TComputeActo
8989

9090
this->TaskRunner->Prepare(this->Task, limits, execCtx);
9191

92+
for (auto& [channelId, channel] : this->InputChannelsMap) {
93+
channel.Channel = this->TaskRunner->GetInputChannel(channelId);
94+
}
95+
96+
for (auto& [inputIndex, source] : this->SourcesMap) {
97+
source.Buffer = this->TaskRunner->GetSource(inputIndex);
98+
Y_ABORT_UNLESS(source.Buffer);
99+
}
100+
101+
for (auto& [inputIndex, transform] : this->InputTransformsMap) {
102+
std::tie(transform.InputBuffer, transform.Buffer) = this->TaskRunner->GetInputTransform(inputIndex);
103+
}
104+
105+
for (auto& [channelId, channel] : this->OutputChannelsMap) {
106+
channel.Channel = this->TaskRunner->GetOutputChannel(channelId);
107+
}
108+
109+
for (auto& [outputIndex, transform] : this->OutputTransformsMap) {
110+
std::tie(transform.Buffer, transform.OutputBuffer) = this->TaskRunner->GetOutputTransform(outputIndex);
111+
}
112+
113+
for (auto& [outputIndex, sink] : this->SinksMap) {
114+
sink.Buffer = this->TaskRunner->GetSink(outputIndex);
115+
}
116+
92117
TBase::FillIoMaps(
93-
this->TaskRunner->GetHolderFactory(),
94-
this->TaskRunner->GetTypeEnv(),
95-
this->TaskRunner->GetSecureParams(),
96-
this->TaskRunner->GetTaskParams(),
97-
this->TaskRunner->GetReadRanges());
118+
this->TaskRunner->GetHolderFactory(),
119+
this->TaskRunner->GetTypeEnv(),
120+
this->TaskRunner->GetSecureParams(),
121+
this->TaskRunner->GetTaskParams(),
122+
this->TaskRunner->GetReadRanges(),
123+
this->TaskRunner->GetRandomProvider()
124+
);
98125
}
99126
};
100127

0 commit comments

Comments
 (0)