Skip to content

Commit b661aaf

Browse files
authored
Merge c37ee9f into 1277454
2 parents 1277454 + c37ee9f commit b661aaf

5 files changed

+38
-5
lines changed

ydb/core/persqueue/ut/partition_chooser_ut.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -621,6 +621,19 @@ Y_UNIT_TEST(TPartitionChooserActor_SplitMergeEnabled_PreferedPartition_OtherPart
621621
AssertTable(server, "A_Source_10", 0, 13);
622622
}
623623

624+
Y_UNIT_TEST(TPartitionChooserActor_SplitMergeEnabled_BadSourceId_Test) {
625+
NPersQueue::TTestServer server = CreateServer();
626+
627+
auto config = CreateConfig0(true);
628+
AddPartition(config, 0, {}, {});
629+
CreatePQTabletMock(server, 0, ETopicPartitionStatus::Active);
630+
631+
auto r = ChoosePartition(server, config, "base64:a***");
632+
633+
UNIT_ASSERT(r->Error);
634+
}
635+
636+
624637
Y_UNIT_TEST(TPartitionChooserActor_SplitMergeDisabled_NewSourceId_Test) {
625638
NPersQueue::TTestServer server = CreateServer();
626639

@@ -692,4 +705,16 @@ Y_UNIT_TEST(TPartitionChooserActor_SplitMergeDisabled_PreferedPartition_Inactive
692705
UNIT_ASSERT(r->Error);
693706
}
694707

708+
Y_UNIT_TEST(TPartitionChooserActor_SplitMergeDisabled_BadSourceId_Test) {
709+
NPersQueue::TTestServer server = CreateServer();
710+
711+
auto config = CreateConfig0(false);
712+
AddPartition(config, 0, {}, {});
713+
714+
auto r = ChoosePartition(server, config, "base64:a***");
715+
716+
UNIT_ASSERT(r->Error);
717+
}
718+
719+
695720
}

ydb/core/persqueue/writer/partition_chooser_impl__abstract_chooser_actor.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,12 @@ class TAbstractPartitionChooserActor: public TActorBootstrapped<TDerived> {
5454
return TActor<TDerived>::SelfId();
5555
}
5656

57-
void Initialize(const NActors::TActorContext& ctx) {
58-
TableHelper.Initialize(ctx, SourceId);
57+
[[nodiscard]] bool Initialize(const NActors::TActorContext& ctx) {
58+
if (TableHelper.Initialize(ctx, SourceId)) {
59+
return true;
60+
}
61+
TThis::ReplyError(ErrorCode::BAD_REQUEST, "Bad SourceId", ctx);
62+
return false;
5963
}
6064

6165
void PassAway() {

ydb/core/persqueue/writer/partition_chooser_impl__old_chooser_actor.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ class TPartitionChooserActor: public TAbstractPartitionChooserActor<TPartitionCh
3737
}
3838

3939
void Bootstrap(const TActorContext& ctx) {
40-
TThis::Initialize(ctx);
40+
if (!TThis::Initialize(ctx)) {
41+
return;
42+
}
4143
TThis::InitTable(ctx);
4244
}
4345

ydb/core/persqueue/writer/partition_chooser_impl__sm_chooser_actor.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ class TSMPartitionChooserActor: public TAbstractPartitionChooserActor<TSMPartiti
3838
}
3939

4040
void Bootstrap(const TActorContext& ctx) {
41-
TThis::Initialize(ctx);
41+
if (!TThis::Initialize(ctx)) {
42+
return;
43+
}
4244
BoundaryPartition = ChoosePartitionSync();
4345

4446
if (TThis::SourceId) {

ydb/core/persqueue/writer/partition_chooser_impl__table_helper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class TTableHelper {
4040
return SeqNo_;
4141
}
4242

43-
bool Initialize(const TActorContext& ctx, const TString& sourceId) {
43+
[[nodiscard]] bool Initialize(const TActorContext& ctx, const TString& sourceId) {
4444
const auto& pqConfig = AppData(ctx)->PQConfig;
4545

4646
TableGeneration = pqConfig.GetTopicsAreFirstClassCitizen() ? ESourceIdTableGeneration::PartitionMapping

0 commit comments

Comments
 (0)