@@ -10,7 +10,11 @@ import (
1010 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
1111)
1212
13- var errUnexpectedNilPartitioningSettings = xerrors .Wrap (errors .New ("ydb: unexpected nil partitioning settings" ))
13+ var (
14+ errUnexpectedNilPartitioningSettings = xerrors .Wrap (errors .New ("ydb: unexpected nil partitioning settings" ))
15+ errUnexpecredNilAutoPartitioningSettings = xerrors .Wrap (errors .New ("ydb: unexpected nil auto-partitioning settings" ))
16+ errUnexpectedNilAutoPartitionWriteSpeed = xerrors .Wrap (errors .New ("ydb: unexpected nil auto-partition write speed" ))
17+ )
1418
1519type Consumer struct {
1620 Name string
@@ -47,8 +51,10 @@ const (
4751)
4852
4953type PartitioningSettings struct {
50- MinActivePartitions int64
51- PartitionCountLimit int64
54+ MinActivePartitions int64
55+ MaxActivePartitions int64
56+ PartitionCountLimit int64
57+ AutoPartitioningSettings AutoPartitioningSettings
5258}
5359
5460func (s * PartitioningSettings ) FromProto (proto * Ydb_Topic.PartitioningSettings ) error {
@@ -57,26 +63,101 @@ func (s *PartitioningSettings) FromProto(proto *Ydb_Topic.PartitioningSettings)
5763 }
5864
5965 s .MinActivePartitions = proto .GetMinActivePartitions ()
66+ s .MaxActivePartitions = proto .GetMaxActivePartitions ()
6067 s .PartitionCountLimit = proto .GetPartitionCountLimit () //nolint:staticcheck
6168
6269 return nil
6370}
6471
6572func (s * PartitioningSettings ) ToProto () * Ydb_Topic.PartitioningSettings {
6673 return & Ydb_Topic.PartitioningSettings {
67- MinActivePartitions : s .MinActivePartitions ,
68- PartitionCountLimit : s .PartitionCountLimit ,
74+ MinActivePartitions : s .MinActivePartitions ,
75+ MaxActivePartitions : s .MaxActivePartitions ,
76+ PartitionCountLimit : s .PartitionCountLimit ,
77+ AutoPartitioningSettings : s .AutoPartitioningSettings .ToProto (),
6978 }
7079}
7180
81+ type AutoPartitioningSettings struct {
82+ AutoPartitioningStrategy AutoPartitioningStrategy
83+ AutoPartitioningWriteSpeedStrategy AutoPartitioningWriteSpeedStrategy
84+ }
85+
86+ func (s * AutoPartitioningSettings ) ToProto () * Ydb_Topic.AutoPartitioningSettings {
87+ if s == nil {
88+ return nil
89+ }
90+
91+ return & Ydb_Topic.AutoPartitioningSettings {
92+ Strategy : s .AutoPartitioningStrategy .ToProto (),
93+ PartitionWriteSpeed : s .AutoPartitioningWriteSpeedStrategy .ToProto (),
94+ }
95+ }
96+
97+ func (s * AutoPartitioningSettings ) FromProto (proto * Ydb_Topic.AutoPartitioningSettings ) error {
98+ if proto == nil {
99+ return xerrors .WithStackTrace (errUnexpecredNilAutoPartitioningSettings )
100+ }
101+ s .AutoPartitioningStrategy = AutoPartitioningStrategy (proto .GetStrategy ())
102+
103+ if proto .GetPartitionWriteSpeed () != nil {
104+ if err := s .AutoPartitioningWriteSpeedStrategy .FromProto (proto .GetPartitionWriteSpeed ()); err != nil {
105+ return err
106+ }
107+ }
108+
109+ return nil
110+ }
111+
112+ type AutoPartitioningStrategy int32
113+
114+ const (
115+ AutoPartitioningStrategyUnspecified = AutoPartitioningStrategy (Ydb_Topic .AutoPartitioningStrategy_AUTO_PARTITIONING_STRATEGY_UNSPECIFIED )
116+ AutoPartitioningStrategyDisabled = AutoPartitioningStrategy (Ydb_Topic .AutoPartitioningStrategy_AUTO_PARTITIONING_STRATEGY_DISABLED )
117+ AutoPartitioningStrategyScaleUpAndDown = AutoPartitioningStrategy (Ydb_Topic .AutoPartitioningStrategy_AUTO_PARTITIONING_STRATEGY_SCALE_UP_AND_DOWN )
118+ AutoPartitioningStrategyPaused = AutoPartitioningStrategy (Ydb_Topic .AutoPartitioningStrategy_AUTO_PARTITIONING_STRATEGY_PAUSED )
119+ )
120+
121+ func (s AutoPartitioningStrategy ) ToProto () Ydb_Topic.AutoPartitioningStrategy {
122+ return Ydb_Topic .AutoPartitioningStrategy (s )
123+ }
124+
125+ type AutoPartitioningWriteSpeedStrategy struct {
126+ StabilizationWindow rawoptional.Duration
127+ UpUtilizationPercent int32
128+ DownUtilizationPercent int32
129+ }
130+
131+ func (s * AutoPartitioningWriteSpeedStrategy ) ToProto () * Ydb_Topic.AutoPartitioningWriteSpeedStrategy {
132+ return & Ydb_Topic.AutoPartitioningWriteSpeedStrategy {
133+ StabilizationWindow : s .StabilizationWindow .ToProto (),
134+ UpUtilizationPercent : s .UpUtilizationPercent ,
135+ DownUtilizationPercent : s .DownUtilizationPercent ,
136+ }
137+ }
138+
139+ func (s * AutoPartitioningWriteSpeedStrategy ) FromProto (speed * Ydb_Topic.AutoPartitioningWriteSpeedStrategy ) error {
140+ if speed == nil {
141+ return xerrors .WithStackTrace (errUnexpectedNilAutoPartitionWriteSpeed )
142+ }
143+
144+ s .StabilizationWindow .MustFromProto (speed .StabilizationWindow )
145+ s .UpUtilizationPercent = speed .UpUtilizationPercent
146+ s .DownUtilizationPercent = speed .DownUtilizationPercent
147+
148+ return nil
149+ }
150+
72151type AlterPartitioningSettings struct {
73152 SetMinActivePartitions rawoptional.Int64
153+ SetMaxActivePartitions rawoptional.Int64
74154 SetPartitionCountLimit rawoptional.Int64
75155}
76156
77157func (s * AlterPartitioningSettings ) ToProto () * Ydb_Topic.AlterPartitioningSettings {
78158 return & Ydb_Topic.AlterPartitioningSettings {
79159 SetMinActivePartitions : s .SetMinActivePartitions .ToProto (),
160+ SetMaxActivePartitions : s .SetMaxActivePartitions .ToProto (),
80161 SetPartitionCountLimit : s .SetPartitionCountLimit .ToProto (),
81162 }
82163}
0 commit comments