Skip to content

Commit be291e7

Browse files
authored
Fix leak of PartitionChooserActor (#4131)
1 parent 34c57d8 commit be291e7

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

ydb/core/persqueue/writer/partition_chooser_impl__abstract_chooser_actor.h

+7-5
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped<TDerived> {
5858
if (TableHelper.Initialize(ctx, SourceId)) {
5959
return true;
6060
}
61-
StartIdle();
61+
StartIdle();
6262
TThis::ReplyError(ErrorCode::BAD_REQUEST, "Bad SourceId", ctx);
6363
return false;
6464
}
@@ -67,6 +67,8 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped<TDerived> {
6767
auto ctx = TActivationContext::ActorContextFor(SelfId());
6868
TableHelper.CloseKqpSession(ctx);
6969
PartitionHelper.Close(ctx);
70+
71+
TActorBootstrapped<TDerived>::PassAway();
7072
}
7173

7274
bool NeedTable(const NActors::TActorContext& ctx) {
@@ -78,7 +80,7 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped<TDerived> {
7880
void InitTable(const NActors::TActorContext& ctx) {
7981
TThis::Become(&TThis::StateInitTable);
8082
const auto& pqConfig = AppData(ctx)->PQConfig;
81-
TRACE("InitTable: SourceId="<< SourceId
83+
TRACE("InitTable: SourceId="<< SourceId
8284
<< " TopicsAreFirstClassCitizen=" << pqConfig.GetTopicsAreFirstClassCitizen()
8385
<< " UseSrcIdMetaMappingInFirstClass=" <<pqConfig.GetUseSrcIdMetaMappingInFirstClass());
8486
if (SourceId && pqConfig.GetTopicsAreFirstClassCitizen() && pqConfig.GetUseSrcIdMetaMappingInFirstClass()) {
@@ -259,14 +261,14 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped<TDerived> {
259261

260262
protected:
261263
void StartIdle() {
262-
TThis::Become(&TThis::StateIdle);
264+
TThis::Become(&TThis::StateIdle);
263265
DEBUG("Start idle");
264266
}
265267

266268
void HandleIdle(TEvPartitionChooser::TEvRefreshRequest::TPtr&, const TActorContext& ctx) {
267269
if (PartitionPersisted) {
268270
SendUpdateRequests(ctx);
269-
}
271+
}
270272
}
271273

272274
STATEFN(StateIdle) {
@@ -303,7 +305,7 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped<TDerived> {
303305

304306
TThis::Die(ctx);
305307
}
306-
308+
307309

308310
protected:
309311
const TActorId Parent;

ydb/services/deprecated/persqueue_v0/grpc_pq_write_actor.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,10 @@ void TWriteSessionActor::Handle(TEvTicketParser::TEvAuthorizeTicketResult::TPtr&
451451
void TWriteSessionActor::DiscoverPartition(const NActors::TActorContext& ctx) {
452452
State = ES_WAIT_PARTITION;
453453

454+
if (PartitionChooser) {
455+
ctx.Send(PartitionChooser, new TEvents::TEvPoison());
456+
}
457+
454458
std::optional<ui32> preferedPartition = PreferedPartition == Max<ui32>() ? std::nullopt : std::optional(PreferedPartition);
455459
PartitionChooser = ctx.RegisterWithSameMailbox(NPQ::CreatePartitionChooserActor(ctx.SelfID, Config, FullConverter, SourceId, preferedPartition));
456460
}
@@ -894,7 +898,7 @@ void TWriteSessionActor::HandleWakeup(const TActorContext& ctx) {
894898
ctx.Send(PartitionChooser, new NPQ::TEvPartitionChooser::TEvRefreshRequest());
895899
LastSourceIdUpdate = now + SOURCEID_UPDATE_PERIOD;
896900
}
897-
901+
898902
if (now >= LogSessionDeadline) {
899903
LogSession(ctx);
900904
}

ydb/services/persqueue_v1/actors/write_session_actor.ipp

+4
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,10 @@ template<bool UseMigrationProtocol>
624624
void TWriteSessionActor<UseMigrationProtocol>::DiscoverPartition(const NActors::TActorContext& ctx) {
625625
State = ES_WAIT_PARTITION;
626626

627+
if (PartitionChooser) {
628+
ctx.Send(PartitionChooser, new TEvents::TEvPoison());
629+
}
630+
627631
std::optional<ui32> preferedPartition = PreferedPartition == Max<ui32>() ? std::nullopt : std::optional(PreferedPartition);
628632
PartitionChooser = ctx.RegisterWithSameMailbox(NPQ::CreatePartitionChooserActor(ctx.SelfID, Config, FullConverter, SourceId, preferedPartition));
629633
}

0 commit comments

Comments
 (0)