24
24
25
25
namespace {
26
26
constexpr i64 kInFlightMemoryLimitPerActor = 64_MB;
27
- constexpr i64 kMemoryLimitPerMessage = 48_MB ;
28
- constexpr i64 kMaxBatchesPerMessage = 1 ;
27
+ constexpr i64 kMemoryLimitPerMessage = 64_MB ;
28
+ constexpr i64 kMaxBatchesPerMessage = 8 ;
29
29
30
30
struct TWriteActorBackoffSettings {
31
31
TDuration StartRetryDelay = TDuration::MilliSeconds(250 );
@@ -81,12 +81,12 @@ namespace {
81
81
namespace NKikimr {
82
82
namespace NKqp {
83
83
84
- class TKqpWriteActor : public TActorBootstrapped <TKqpWriteActor >, public NYql::NDq::IDqComputeActorAsyncOutput {
85
- using TBase = TActorBootstrapped<TKqpWriteActor >;
84
+ class TKqpDirectWriteActor : public TActorBootstrapped <TKqpDirectWriteActor >, public NYql::NDq::IDqComputeActorAsyncOutput {
85
+ using TBase = TActorBootstrapped<TKqpDirectWriteActor >;
86
86
87
87
class TResumeNotificationManager {
88
88
public:
89
- TResumeNotificationManager (TKqpWriteActor & writer)
89
+ TResumeNotificationManager (TKqpDirectWriteActor & writer)
90
90
: Writer(writer) {
91
91
CheckMemory ();
92
92
}
@@ -102,7 +102,7 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
102
102
}
103
103
104
104
private:
105
- TKqpWriteActor & Writer;
105
+ TKqpDirectWriteActor & Writer;
106
106
i64 LastFreeMemory = std::numeric_limits<i64>::max();
107
107
};
108
108
@@ -127,7 +127,7 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
127
127
};
128
128
129
129
public:
130
- TKqpWriteActor (
130
+ TKqpDirectWriteActor (
131
131
NKikimrKqp::TKqpTableSinkSettings&& settings,
132
132
NYql::NDq::TDqAsyncIoFactory::TSinkArguments&& args,
133
133
TIntrusivePtr<TKqpCounters> counters)
@@ -137,6 +137,7 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
137
137
, Callbacks(args.Callback)
138
138
, Counters(counters)
139
139
, TypeEnv(args.TypeEnv)
140
+ , Alloc(args.Alloc)
140
141
, TxId(args.TxId)
141
142
, TableId(
142
143
Settings.GetTable().GetOwnerId(),
@@ -157,13 +158,13 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
157
158
void Bootstrap () {
158
159
LogPrefix = TStringBuilder () << " SelfId: " << this ->SelfId () << " , " << LogPrefix;
159
160
ResolveTable ();
160
- Become (&TKqpWriteActor ::StateFunc);
161
+ Become (&TKqpDirectWriteActor ::StateFunc);
161
162
}
162
163
163
164
static constexpr char ActorName[] = " KQP_WRITE_ACTOR" ;
164
165
165
166
private:
166
- virtual ~TKqpWriteActor () {
167
+ virtual ~TKqpDirectWriteActor () {
167
168
}
168
169
169
170
void CommitState (const NYql::NDqProto::TCheckpoint&) final {};
@@ -491,7 +492,7 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
491
492
<< " , Cookie=" << ev->Cookie
492
493
<< " , LocksCount=" << ev->Get ()->Record .GetTxLocks ().size ());
493
494
494
- PopShardBatch (ev->Get ()->Record .GetOrigin (), ev->Cookie );
495
+ OnMessageAcknowledged (ev->Get ()->Record .GetOrigin (), ev->Cookie );
495
496
496
497
for (const auto & lock : ev->Get ()->Record .GetTxLocks ()) {
497
498
LocksInfo[ev->Get ()->Record .GetOrigin ()].AddAndCheckLock (lock);
@@ -500,7 +501,7 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
500
501
ProcessBatches ();
501
502
}
502
503
503
- void PopShardBatch (ui64 shardId, ui64 cookie) {
504
+ void OnMessageAcknowledged (ui64 shardId, ui64 cookie) {
504
505
TResumeNotificationManager resumeNotificator (*this );
505
506
const auto removedDataSize = ShardedWriteController->OnMessageAcknowledged (shardId, cookie);
506
507
if (removedDataSize) {
@@ -669,7 +670,7 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
669
670
670
671
void PassAway () override {
671
672
Send (PipeCacheId, new TEvPipeCache::TEvUnlink (0 ));
672
- TActorBootstrapped<TKqpWriteActor >::PassAway ();
673
+ TActorBootstrapped<TKqpDirectWriteActor >::PassAway ();
673
674
}
674
675
675
676
void Prepare () {
@@ -693,7 +694,8 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
693
694
: kMaxBatchesPerMessage ),
694
695
},
695
696
std::move (columnsMetadata),
696
- TypeEnv);
697
+ TypeEnv,
698
+ Alloc);
697
699
} catch (...) {
698
700
RuntimeError (
699
701
CurrentExceptionMessage (),
@@ -721,7 +723,6 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
721
723
Callbacks->ResumeExecution ();
722
724
}
723
725
724
- NActors::TActorId TxProxyId = MakeTxProxyID();
725
726
NActors::TActorId PipeCacheId = NKikimr::MakePipePerNodeCacheID(false );
726
727
727
728
TString LogPrefix;
@@ -731,6 +732,7 @@ class TKqpWriteActor : public TActorBootstrapped<TKqpWriteActor>, public NYql::N
731
732
NYql::NDq::IDqComputeActorAsyncOutput::ICallbacks * Callbacks = nullptr ;
732
733
TIntrusivePtr<TKqpCounters> Counters;
733
734
const NMiniKQL::TTypeEnvironment& TypeEnv;
735
+ std::shared_ptr<NKikimr::NMiniKQL::TScopedAlloc> Alloc;
734
736
735
737
const NYql::NDq::TTxId TxId;
736
738
const TTableId TableId;
@@ -754,7 +756,7 @@ void RegisterKqpWriteActor(NYql::NDq::TDqAsyncIoFactory& factory, TIntrusivePtr<
754
756
factory.RegisterSink <NKikimrKqp::TKqpTableSinkSettings>(
755
757
TString (NYql::KqpTableSinkName),
756
758
[counters] (NKikimrKqp::TKqpTableSinkSettings&& settings, NYql::NDq::TDqAsyncIoFactory::TSinkArguments&& args) {
757
- auto * actor = new TKqpWriteActor (std::move (settings), std::move (args), counters);
759
+ auto * actor = new TKqpDirectWriteActor (std::move (settings), std::move (args), counters);
758
760
return std::make_pair<NYql::NDq::IDqComputeActorAsyncOutput*, NActors::IActor*>(actor, actor);
759
761
});
760
762
}
0 commit comments