Skip to content

Commit 8acfed4

Browse files
authored
Fix alter of autoparttitioning setting in CLI (#11037)
1 parent 8c63dbf commit 8acfed4

File tree

2 files changed

+67
-7
lines changed

2 files changed

+67
-7
lines changed

ydb/core/persqueue/ut/ut_with_sdk/autoscaling_ut.cpp

+58
Original file line numberDiff line numberDiff line change
@@ -1011,6 +1011,64 @@ Y_UNIT_TEST_SUITE(TopicAutoscaling) {
10111011
WaitAndAssertPartitionCount(setup, "/Root/origin/feed", 3);
10121012
}
10131013

1014+
Y_UNIT_TEST(ControlPlane_CDC) {
1015+
TTopicSdkTestSetup setup = CreateSetup();
1016+
auto tableClient = setup.MakeTableClient();
1017+
auto session = tableClient.CreateSession().GetValueSync().GetSession();
1018+
auto client = setup.MakeClient();
1019+
1020+
ExecuteQuery(session, R"(
1021+
--!syntax_v1
1022+
CREATE TABLE `/Root/origin` (
1023+
id Uint64,
1024+
value Text,
1025+
PRIMARY KEY (id)
1026+
);
1027+
)");
1028+
1029+
ExecuteQuery(session, R"(
1030+
--!syntax_v1
1031+
ALTER TABLE `/Root/origin`
1032+
ADD CHANGEFEED `feed` WITH (
1033+
MODE = 'UPDATES',
1034+
FORMAT = 'JSON',
1035+
TOPIC_AUTO_PARTITIONING = 'ENABLED'
1036+
);
1037+
)");
1038+
1039+
{
1040+
TAlterTopicSettings alterSettings;
1041+
alterSettings
1042+
.BeginAlterPartitioningSettings()
1043+
.MinActivePartitions(3)
1044+
.MaxActivePartitions(107)
1045+
.BeginAlterAutoPartitioningSettings()
1046+
.Strategy(EAutoPartitioningStrategy::ScaleUp)
1047+
.StabilizationWindow(TDuration::Seconds(3))
1048+
.DownUtilizationPercent(5)
1049+
.UpUtilizationPercent(7)
1050+
.EndAlterAutoPartitioningSettings()
1051+
.EndAlterTopicPartitioningSettings();
1052+
auto f = client.AlterTopic("/Root/origin/feed", alterSettings);
1053+
f.Wait();
1054+
1055+
auto v = f.GetValueSync();
1056+
UNIT_ASSERT_C(v.IsSuccess(), "Error: " << v);
1057+
}
1058+
1059+
{
1060+
auto describeAfterAlter = client.DescribeTopic("/Root/origin/feed").GetValueSync();
1061+
1062+
auto& s = describeAfterAlter.GetTopicDescription().GetPartitioningSettings();
1063+
UNIT_ASSERT_VALUES_EQUAL(s.GetMinActivePartitions(), 3);
1064+
UNIT_ASSERT_VALUES_EQUAL(s.GetMaxActivePartitions(), 107);
1065+
UNIT_ASSERT_VALUES_EQUAL(s.GetAutoPartitioningSettings().GetStrategy(), EAutoPartitioningStrategy::ScaleUp);
1066+
UNIT_ASSERT_VALUES_EQUAL(s.GetAutoPartitioningSettings().GetStabilizationWindow(), TDuration::Seconds(3));
1067+
UNIT_ASSERT_VALUES_EQUAL(s.GetAutoPartitioningSettings().GetDownUtilizationPercent(), 5);
1068+
UNIT_ASSERT_VALUES_EQUAL(s.GetAutoPartitioningSettings().GetUpUtilizationPercent(), 7);
1069+
}
1070+
}
1071+
10141072
Y_UNIT_TEST(BalancingAfterSplit_sessionsWithPartition) {
10151073
TTopicSdkTestSetup setup = CreateSetup();
10161074
setup.CreateTopicWithAutoscale(TEST_TOPIC, TEST_CONSUMER, 1, 100);

ydb/public/lib/ydb_cli/commands/ydb_service_topic.cpp

+9-7
Original file line numberDiff line numberDiff line change
@@ -403,30 +403,32 @@ namespace {
403403
NYdb::NTopic::TDescribeTopicResult& describeResult) {
404404
auto settings = NYdb::NTopic::TAlterTopicSettings();
405405
auto& partitioningSettings = settings.BeginAlterPartitioningSettings();
406+
auto& originPartitioningSettings = describeResult.GetTopicDescription().GetPartitioningSettings();
406407

407-
if (MinActivePartitions_.Defined() && (*MinActivePartitions_ != describeResult.GetTopicDescription().GetPartitioningSettings().GetMinActivePartitions())) {
408+
if (MinActivePartitions_.Defined() && (*MinActivePartitions_ != originPartitioningSettings.GetMinActivePartitions())) {
408409
partitioningSettings.MinActivePartitions(*MinActivePartitions_);
409410
}
410411

411-
if (MaxActivePartitions_.Defined() && (*MaxActivePartitions_ != describeResult.GetTopicDescription().GetPartitioningSettings().GetMaxActivePartitions())) {
412+
if (MaxActivePartitions_.Defined() && (*MaxActivePartitions_ != originPartitioningSettings.GetMaxActivePartitions())) {
412413
partitioningSettings.MaxActivePartitions(*MaxActivePartitions_);
413414
}
414415

415-
auto autoPartitioningSettings = partitioningSettings.BeginAlterAutoPartitioningSettings();
416+
auto& autoPartitioningSettings = partitioningSettings.BeginAlterAutoPartitioningSettings();
417+
const auto& originalAutoPartitioningSettings = originPartitioningSettings.GetAutoPartitioningSettings();
416418

417-
if (GetAutoPartitioningStabilizationWindowSeconds().Defined() && *GetAutoPartitioningStabilizationWindowSeconds() != describeResult.GetTopicDescription().GetPartitioningSettings().GetAutoPartitioningSettings().GetStabilizationWindow().Seconds()) {
419+
if (GetAutoPartitioningStabilizationWindowSeconds().Defined() && *GetAutoPartitioningStabilizationWindowSeconds() != originalAutoPartitioningSettings.GetStabilizationWindow().Seconds()) {
418420
autoPartitioningSettings.StabilizationWindow(TDuration::Seconds(*GetAutoPartitioningStabilizationWindowSeconds()));
419421
}
420422

421-
if (GetAutoPartitioningStrategy().Defined() && *GetAutoPartitioningStrategy() != describeResult.GetTopicDescription().GetPartitioningSettings().GetAutoPartitioningSettings().GetStrategy()) {
423+
if (GetAutoPartitioningStrategy().Defined() && *GetAutoPartitioningStrategy() != originalAutoPartitioningSettings.GetStrategy()) {
422424
autoPartitioningSettings.Strategy(*GetAutoPartitioningStrategy());
423425
}
424426

425-
if (GetAutoPartitioninDownUtilizationPercent().Defined() && *GetAutoPartitioninDownUtilizationPercent() != describeResult.GetTopicDescription().GetPartitioningSettings().GetAutoPartitioningSettings().GetDownUtilizationPercent()) {
427+
if (GetAutoPartitioninDownUtilizationPercent().Defined() && *GetAutoPartitioninDownUtilizationPercent() != originalAutoPartitioningSettings.GetDownUtilizationPercent()) {
426428
autoPartitioningSettings.DownUtilizationPercent(*GetAutoPartitioninDownUtilizationPercent());
427429
}
428430

429-
if (GetAutoPartitioningUpUtilizationPercent().Defined() && *GetAutoPartitioningUpUtilizationPercent() != describeResult.GetTopicDescription().GetPartitioningSettings().GetAutoPartitioningSettings().GetUpUtilizationPercent()) {
431+
if (GetAutoPartitioningUpUtilizationPercent().Defined() && *GetAutoPartitioningUpUtilizationPercent() != originalAutoPartitioningSettings.GetUpUtilizationPercent()) {
430432
autoPartitioningSettings.UpUtilizationPercent(*GetAutoPartitioningUpUtilizationPercent());
431433
}
432434

0 commit comments

Comments
 (0)