@@ -9,9 +9,8 @@ const TString INSERT_NEW_GROUP = R"sql(
9
9
DECLARE $State AS Uint64;
10
10
DECLARE $Database AS Utf8;
11
11
DECLARE $Master AS Utf8;
12
- DECLARE $LastHeartbeat AS Datetime;
12
+ DECLARE $LastMasterHeartbeat AS Datetime;
13
13
DECLARE $ProtocolType AS Utf8;
14
- DECLARE $RebalanceTimeoutMs AS Uint32;
15
14
16
15
INSERT INTO `%s`
17
16
(
@@ -21,19 +20,17 @@ const TString INSERT_NEW_GROUP = R"sql(
21
20
database,
22
21
last_heartbeat_time,
23
22
master,
24
- protocol_type,
25
- rebalance_timeout_ms
23
+ protocol_type
26
24
)
27
25
VALUES
28
26
(
29
27
$ConsumerGroup,
30
28
$Generation,
31
29
$State,
32
30
$Database,
33
- $LastHeartbeat ,
31
+ $LastMasterHeartbeat ,
34
32
$Master,
35
- $ProtocolType,
36
- $RebalanceTimeoutMs
33
+ $ProtocolType
37
34
);
38
35
)sql" ;
39
36
@@ -44,16 +41,14 @@ const TString UPDATE_GROUP = R"sql(
44
41
DECLARE $Generation AS Uint64;
45
42
DECLARE $Database AS Utf8;
46
43
DECLARE $Master AS Utf8;
47
- DECLARE $LastHeartbeat AS Datetime;
48
- DECLARE $RebalanceTimeoutMs AS Uint32;
44
+ DECLARE $LastMasterHeartbeat AS Datetime;
49
45
50
46
UPDATE `%s`
51
47
SET
52
48
state = $State,
53
49
generation = $Generation,
54
- last_heartbeat_time = $LastHeartbeat,
55
- master = $Master,
56
- rebalance_timeout_ms = $RebalanceTimeoutMs
50
+ last_heartbeat_time = $LastMasterHeartbeat,
51
+ master = $Master
57
52
WHERE database = $Database
58
53
AND consumer_group = $ConsumerGroup;
59
54
)sql" ;
@@ -77,12 +72,12 @@ const TString UPDATE_GROUP_STATE_AND_PROTOCOL = R"sql(
77
72
DECLARE $State AS Uint64;
78
73
DECLARE $Database AS Utf8;
79
74
DECLARE $Protocol AS Utf8;
80
- DECLARE $LastHeartbeat AS Datetime;
75
+ DECLARE $LastMasterHeartbeat AS Datetime;
81
76
82
77
UPDATE `%s`
83
78
SET
84
79
state = $State,
85
- last_heartbeat_time = $LastHeartbeat ,
80
+ last_heartbeat_time = $LastMasterHeartbeat ,
86
81
protocol = $Protocol
87
82
WHERE database = $Database
88
83
AND consumer_group = $ConsumerGroup;
@@ -93,6 +88,7 @@ const TString INSERT_MEMBER = R"sql(
93
88
DECLARE $ConsumerGroup AS Utf8;
94
89
DECLARE $Generation AS Uint64;
95
90
DECLARE $MemberId AS Utf8;
91
+ DECLARE $InstanceId AS Utf8;
96
92
DECLARE $WorkerStateProto AS String;
97
93
DECLARE $Database AS Utf8;
98
94
DECLARE $HeartbeatDeadline AS Datetime;
@@ -103,6 +99,7 @@ const TString INSERT_MEMBER = R"sql(
103
99
consumer_group,
104
100
generation,
105
101
member_id,
102
+ instance_id,
106
103
heartbeat_deadline,
107
104
worker_state_proto,
108
105
database,
@@ -112,6 +109,7 @@ const TString INSERT_MEMBER = R"sql(
112
109
$ConsumerGroup,
113
110
$Generation,
114
111
$MemberId,
112
+ $InstanceId,
115
113
$HeartbeatDeadline,
116
114
$WorkerStateProto,
117
115
$Database,
@@ -126,7 +124,7 @@ const TString UPSERT_ASSIGNMENTS_AND_SET_WORKING_STATE = R"sql(
126
124
DECLARE $Database AS Utf8;
127
125
DECLARE $Generation AS Uint64;
128
126
DECLARE $State AS Uint64;
129
- DECLARE $LastHeartbeat AS Datetime;
127
+ DECLARE $LastMasterHeartbeat AS Datetime;
130
128
131
129
UPSERT INTO `%s`
132
130
SELECT
@@ -140,11 +138,32 @@ const TString UPSERT_ASSIGNMENTS_AND_SET_WORKING_STATE = R"sql(
140
138
UPDATE `%s`
141
139
SET
142
140
state = $State,
143
- last_heartbeat_time = $LastHeartbeat
141
+ last_heartbeat_time = $LastMasterHeartbeat,
142
+ last_success_generation = $Generation
144
143
WHERE database = $Database
145
144
AND consumer_group = $ConsumerGroup;
146
145
)sql" ;
147
146
147
+ const TString SELECT_ALIVE_MEMBERS = R"sql(
148
+ --!syntax_v1
149
+ DECLARE $ConsumerGroup AS Utf8;
150
+ DECLARE $Generation AS Uint64;
151
+ DECLARE $Database AS Utf8;
152
+ DECLARE $PaginationMemberId AS Utf8;
153
+ DECLARE $Limit AS Uint64;
154
+
155
+ SELECT member_id, instance_id, rebalance_timeout_ms
156
+ FROM `%s`
157
+ VIEW PRIMARY KEY
158
+ WHERE database = $Database
159
+ AND consumer_group = $ConsumerGroup
160
+ AND generation = $Generation
161
+ AND member_id > $PaginationMemberId
162
+ AND (leaved IS NULL OR leaved = False)
163
+ ORDER BY member_id
164
+ LIMIT $Limit;
165
+ )sql" ;
166
+
148
167
const TString SELECT_WORKER_STATES = R"sql(
149
168
--!syntax_v1
150
169
DECLARE $ConsumerGroup AS Utf8;
@@ -153,7 +172,7 @@ const TString SELECT_WORKER_STATES = R"sql(
153
172
DECLARE $PaginationMemberId AS Utf8;
154
173
DECLARE $Limit AS Uint64;
155
174
156
- SELECT worker_state_proto, member_id
175
+ SELECT worker_state_proto, member_id, instance_id
157
176
FROM `%s`
158
177
VIEW PRIMARY KEY
159
178
WHERE database = $Database
@@ -169,7 +188,7 @@ const TString CHECK_GROUP_STATE = R"sql(
169
188
DECLARE $ConsumerGroup AS Utf8;
170
189
DECLARE $Database AS Utf8;
171
190
172
- SELECT state, generation, master, last_heartbeat_time, consumer_group, database, protocol, protocol_type, rebalance_timeout_ms
191
+ SELECT state, generation, master, last_heartbeat_time, consumer_group, database, protocol, protocol_type, last_success_generation
173
192
FROM `%s`
174
193
VIEW PRIMARY KEY
175
194
WHERE database = $Database
@@ -218,20 +237,21 @@ const TString CHECK_DEAD_MEMBERS = R"sql(
218
237
219
238
)sql" ;
220
239
221
- const TString UPDATE_LASTHEARTBEATS = R"sql(
240
+ const TString UPDATE_LAST_HEARTBEATS = R"sql(
222
241
--!syntax_v1
223
242
DECLARE $ConsumerGroup AS Utf8;
224
243
DECLARE $Generation AS Uint64;
225
244
DECLARE $MemberId AS Utf8;
226
245
DECLARE $Database AS Utf8;
227
- DECLARE $LastHeartbeat AS Datetime;
246
+ DECLARE $LastMasterHeartbeat AS Datetime;
228
247
DECLARE $HeartbeatDeadline AS Datetime;
229
248
DECLARE $UpdateGroupHeartbeat AS Bool;
230
249
231
250
UPDATE `%s`
232
- SET last_heartbeat_time = $LastHeartbeat
251
+ SET last_heartbeat_time = $LastMasterHeartbeat
233
252
WHERE consumer_group = $ConsumerGroup
234
253
AND database = $Database
254
+ AND generation = $Generation
235
255
AND $UpdateGroupHeartbeat = True;
236
256
237
257
UPDATE `%s`
@@ -248,10 +268,11 @@ const TString UPDATE_LASTHEARTBEAT_TO_LEAVE_GROUP = R"sql(
248
268
DECLARE $ConsumerGroup AS Utf8;
249
269
DECLARE $MemberId AS Utf8;
250
270
DECLARE $Database AS Utf8;
251
- DECLARE $LastHeartbeat AS Datetime;
271
+ DECLARE $LastMasterHeartbeat AS Datetime;
252
272
253
273
UPDATE `%s`
254
- SET heartbeat_deadline = $LastHeartbeat
274
+ SET heartbeat_deadline = $LastMasterHeartbeat,
275
+ leaved = True
255
276
WHERE consumer_group = $ConsumerGroup
256
277
AND member_id = $MemberId
257
278
AND database = $Database;
0 commit comments