Skip to content

Commit 5facc1d

Browse files
authored
allow max_active_partitions=0 when topic autopartitioning disabled (#7493)
1 parent 2f2468c commit 5facc1d

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

ydb/services/datastreams/datastreams_proxy.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -484,9 +484,6 @@ namespace NKikimr::NDataStreams::V1 {
484484
auto& s = GetProtoRequest()->partitioning_settings();
485485
auto* t = groupConfig.MutablePQTabletConfig()->MutablePartitionStrategy();
486486

487-
t->SetMinPartitionCount(s.min_active_partitions() ? s.min_active_partitions() : 1);
488-
t->SetMaxPartitionCount(s.max_active_partitions() ? s.max_active_partitions() : 1);
489-
490487
auto& as = s.auto_partitioning_settings();
491488
switch(as.strategy()) {
492489
case Ydb::DataStreams::V1::AutoPartitioningStrategy::AUTO_PARTITIONING_STRATEGY_UNSPECIFIED:
@@ -509,6 +506,13 @@ namespace NKikimr::NDataStreams::V1 {
509506
break;
510507
}
511508

509+
t->SetMinPartitionCount(s.min_active_partitions() ? s.min_active_partitions() : 1);
510+
if (!s.max_active_partitions() && t->GetPartitionStrategyType() != NKikimrPQ::TPQTabletConfig_TPartitionStrategyType::TPQTabletConfig_TPartitionStrategyType_DISABLED) {
511+
t->SetMaxPartitionCount(1);
512+
} else {
513+
t->SetMaxPartitionCount(s.max_active_partitions());
514+
}
515+
512516
auto& ws = as.partition_write_speed();
513517
t->SetScaleThresholdSeconds(ws.stabilization_window().seconds() ? ws.stabilization_window().seconds() : 300);
514518
t->SetScaleUpPartitionWriteSpeedThresholdPercent(ws.up_utilization_percent() ? ws.up_utilization_percent() : 90);

ydb/services/datastreams/datastreams_ut.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2896,6 +2896,36 @@ Y_UNIT_TEST_SUITE(DataStreams) {
28962896
UNIT_ASSERT_VALUES_EQUAL(d.partitioning_settings().auto_partitioning_settings().partition_write_speed().up_utilization_percent(), 93);
28972897
UNIT_ASSERT_VALUES_EQUAL(d.partitioning_settings().auto_partitioning_settings().partition_write_speed().down_utilization_percent(), 17);
28982898
}
2899+
2900+
{
2901+
auto result = testServer.DataStreamsClient->UpdateStream(streamName2,
2902+
NYDS_V1::TUpdateStreamSettings()
2903+
.BeginConfigurePartitioningSettings()
2904+
.MaxActivePartitions(0)
2905+
.BeginConfigureAutoPartitioningSettings()
2906+
.Strategy(NYdb::NDataStreams::V1::EAutoPartitioningStrategy::Disabled)
2907+
.EndConfigureAutoPartitioningSettings()
2908+
.EndConfigurePartitioningSettings()
2909+
).ExtractValueSync();
2910+
2911+
UNIT_ASSERT_VALUES_EQUAL(result.IsTransportError(), false);
2912+
if (result.GetStatus() != EStatus::SUCCESS) {
2913+
result.GetIssues().PrintTo(Cerr);
2914+
}
2915+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
2916+
}
2917+
2918+
{
2919+
auto result = testServer.DataStreamsClient->DescribeStream(streamName2).ExtractValueSync();
2920+
UNIT_ASSERT_VALUES_EQUAL(result.IsTransportError(), false);
2921+
Cerr << result.GetIssues().ToString() << "\n";
2922+
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
2923+
2924+
auto& d = result.GetResult().stream_description();
2925+
UNIT_ASSERT_VALUES_EQUAL(d.stream_status(), YDS_V1::StreamDescription::ACTIVE);
2926+
UNIT_ASSERT_VALUES_EQUAL(d.partitioning_settings().auto_partitioning_settings().strategy(), ::Ydb::DataStreams::V1::AutoPartitioningStrategy::AUTO_PARTITIONING_STRATEGY_DISABLED);
2927+
}
2928+
28992929
}
29002930

29012931
}

0 commit comments

Comments
 (0)