@@ -11,6 +11,7 @@ const TString INSERT_NEW_GROUP = R"sql(
11
11
DECLARE $Master AS Utf8;
12
12
DECLARE $LastHeartbeat AS Datetime;
13
13
DECLARE $ProtocolType AS Utf8;
14
+ DECLARE $RebalanceTimeoutMs AS Uint32;
14
15
15
16
INSERT INTO `%s`
16
17
(
@@ -20,7 +21,8 @@ const TString INSERT_NEW_GROUP = R"sql(
20
21
database,
21
22
last_heartbeat_time,
22
23
master,
23
- protocol_type
24
+ protocol_type,
25
+ rebalance_timeout_ms
24
26
)
25
27
VALUES
26
28
(
@@ -30,7 +32,8 @@ const TString INSERT_NEW_GROUP = R"sql(
30
32
$Database,
31
33
$LastHeartbeat,
32
34
$Master,
33
- $ProtocolType
35
+ $ProtocolType,
36
+ $RebalanceTimeoutMs
34
37
);
35
38
)sql" ;
36
39
@@ -42,15 +45,17 @@ const TString UPDATE_GROUP = R"sql(
42
45
DECLARE $Database AS Utf8;
43
46
DECLARE $Master AS Utf8;
44
47
DECLARE $LastHeartbeat AS Datetime;
48
+ DECLARE $RebalanceTimeoutMs AS Uint32;
45
49
46
50
UPDATE `%s`
47
51
SET
48
52
state = $State,
49
53
generation = $Generation,
50
54
last_heartbeat_time = $LastHeartbeat,
51
- master = $Master
52
- WHERE consumer_group = $ConsumerGroup
53
- AND database = $Database;
55
+ master = $Master,
56
+ rebalance_timeout_ms = $RebalanceTimeoutMs
57
+ WHERE database = $Database
58
+ AND consumer_group = $ConsumerGroup;
54
59
)sql" ;
55
60
56
61
const TString UPDATE_GROUP_STATE_AND_PROTOCOL = R"sql(
@@ -66,8 +71,8 @@ const TString UPDATE_GROUP_STATE_AND_PROTOCOL = R"sql(
66
71
state = $State,
67
72
last_heartbeat_time = $LastHeartbeat,
68
73
protocol = $Protocol
69
- WHERE consumer_group = $ConsumerGroup
70
- AND database = $Database ;
74
+ WHERE database = $Database
75
+ AND consumer_group = $ConsumerGroup ;
71
76
)sql" ;
72
77
73
78
const TString INSERT_MEMBER = R"sql(
@@ -77,24 +82,27 @@ const TString INSERT_MEMBER = R"sql(
77
82
DECLARE $MemberId AS Utf8;
78
83
DECLARE $WorkerStateProto AS String;
79
84
DECLARE $Database AS Utf8;
80
- DECLARE $LastHeartbeat AS Datetime;
85
+ DECLARE $HeartbeatDeadline AS Datetime;
86
+ DECLARE $SessionTimeoutMs AS Uint32;
81
87
82
88
INSERT INTO `%s`
83
89
(
84
90
consumer_group,
85
91
generation,
86
92
member_id,
87
- last_heartbeat_time ,
93
+ heartbeat_deadline ,
88
94
worker_state_proto,
89
- database
95
+ database,
96
+ session_timeout_ms
90
97
)
91
98
VALUES (
92
99
$ConsumerGroup,
93
100
$Generation,
94
101
$MemberId,
95
- $LastHeartbeat ,
102
+ $HeartbeatDeadline ,
96
103
$WorkerStateProto,
97
- $Database
104
+ $Database,
105
+ $SessionTimeoutMs
98
106
);
99
107
)sql" ;
100
108
@@ -120,41 +128,39 @@ const TString UPSERT_ASSIGNMENTS_AND_SET_WORKING_STATE = R"sql(
120
128
SET
121
129
state = $State,
122
130
last_heartbeat_time = $LastHeartbeat
123
- WHERE consumer_group = $ConsumerGroup
124
- AND database = $Database ;
131
+ WHERE database = $Database
132
+ AND consumer_group = $ConsumerGroup ;
125
133
)sql" ;
126
134
127
- const TString UPDATE_GROUPS_AND_SELECT_WORKER_STATES = R"sql(
135
+ const TString SELECT_WORKER_STATES = R"sql(
128
136
--!syntax_v1
129
137
DECLARE $ConsumerGroup AS Utf8;
130
- DECLARE $State AS Uint64;
131
138
DECLARE $Generation AS Uint64;
132
139
DECLARE $Database AS Utf8;
133
- DECLARE $LastHeartbeat AS Datetime;
134
-
135
- UPDATE `%s`
136
- SET
137
- state = $State,
138
- last_heartbeat_time = $LastHeartbeat
139
- WHERE consumer_group = $ConsumerGroup
140
- AND database = $Database;
140
+ DECLARE $PaginationMemberId AS Utf8;
141
+ DECLARE $Limit AS Uint64;
141
142
142
143
SELECT worker_state_proto, member_id
143
144
FROM `%s`
144
- WHERE consumer_group = $ConsumerGroup
145
+ VIEW PRIMARY KEY
146
+ WHERE database = $Database
147
+ AND consumer_group = $ConsumerGroup
145
148
AND generation = $Generation
146
- AND database = $Database;
149
+ AND member_id > $PaginationMemberId
150
+ ORDER BY member_id
151
+ LIMIT $Limit;
147
152
)sql" ;
148
153
149
154
const TString CHECK_GROUP_STATE = R"sql(
150
155
--!syntax_v1
151
156
DECLARE $ConsumerGroup AS Utf8;
152
157
DECLARE $Database AS Utf8;
153
158
154
- SELECT state, generation, master, last_heartbeat_time, consumer_group, database, protocol, protocol_type
159
+ SELECT state, generation, master, last_heartbeat_time, consumer_group, database, protocol, protocol_type, rebalance_timeout_ms
155
160
FROM `%s`
156
- WHERE consumer_group = $ConsumerGroup
157
- AND database = $Database;
161
+ VIEW PRIMARY KEY
162
+ WHERE database = $Database
163
+ AND consumer_group = $ConsumerGroup;
158
164
)sql" ;
159
165
160
166
const TString FETCH_ASSIGNMENTS = R"sql(
@@ -166,10 +172,11 @@ const TString FETCH_ASSIGNMENTS = R"sql(
166
172
167
173
SELECT assignment
168
174
FROM `%s`
169
- WHERE consumer_group = $ConsumerGroup
175
+ VIEW PRIMARY KEY
176
+ WHERE database = $Database
177
+ AND consumer_group = $ConsumerGroup
170
178
AND generation = $Generation
171
- AND member_id = $MemberId
172
- AND database = $Database;
179
+ AND member_id = $MemberId;
173
180
)sql" ;
174
181
175
182
const TString CHECK_DEAD_MEMBERS = R"sql(
@@ -178,13 +185,24 @@ const TString CHECK_DEAD_MEMBERS = R"sql(
178
185
DECLARE $Generation AS Uint64;
179
186
DECLARE $Database AS Utf8;
180
187
DECLARE $Deadline AS Datetime;
188
+ DECLARE $MemberId AS Utf8;
181
189
182
190
SELECT COUNT(1) as cnt
183
191
FROM `%s`
184
- WHERE consumer_group = $ConsumerGroup
192
+ VIEW idx_group_generation_db_hb
193
+ WHERE database = $Database
194
+ AND consumer_group = $ConsumerGroup
195
+ AND generation = $Generation
196
+ AND heartbeat_deadline < $Deadline;
197
+
198
+ SELECT session_timeout_ms
199
+ FROM `%s`
200
+ VIEW PRIMARY KEY
201
+ WHERE database = $Database
202
+ AND consumer_group = $ConsumerGroup
185
203
AND generation = $Generation
186
- AND database = $Database
187
- AND last_heartbeat_time < $Deadline;
204
+ AND member_id = $MemberId;
205
+
188
206
)sql" ;
189
207
190
208
const TString UPDATE_LASTHEARTBEATS = R"sql(
@@ -194,6 +212,7 @@ const TString UPDATE_LASTHEARTBEATS = R"sql(
194
212
DECLARE $MemberId AS Utf8;
195
213
DECLARE $Database AS Utf8;
196
214
DECLARE $LastHeartbeat AS Datetime;
215
+ DECLARE $HeartbeatDeadline AS Datetime;
197
216
DECLARE $UpdateGroupHeartbeat AS Bool;
198
217
199
218
UPDATE `%s`
@@ -203,7 +222,7 @@ const TString UPDATE_LASTHEARTBEATS = R"sql(
203
222
AND $UpdateGroupHeartbeat = True;
204
223
205
224
UPDATE `%s`
206
- SET last_heartbeat_time = $LastHeartbeat
225
+ SET heartbeat_deadline = $HeartbeatDeadline
207
226
WHERE consumer_group = $ConsumerGroup
208
227
AND generation = $Generation
209
228
AND member_id = $MemberId
@@ -219,12 +238,16 @@ const TString UPDATE_LASTHEARTBEAT_TO_LEAVE_GROUP = R"sql(
219
238
DECLARE $LastHeartbeat AS Datetime;
220
239
221
240
UPDATE `%s`
222
- SET last_heartbeat_time = $LastHeartbeat
241
+ SET heartbeat_deadline = $LastHeartbeat
223
242
WHERE consumer_group = $ConsumerGroup
224
243
AND member_id = $MemberId
225
244
AND database = $Database;
226
245
)sql" ;
227
246
228
- } // namespace NKafka
247
+ const TString CHECK_GROUPS_COUNT = R"sql(
248
+ --!syntax_v1
249
+ SELECT COUNT(1) as groups_count
250
+ FROM `%s`
251
+ )sql" ;
229
252
230
- // savnik check max members count
253
+ } // namespace NKafka
0 commit comments