@@ -98,8 +98,17 @@ impl NodeStatusUpdater {
98
98
. heartbeat_store
99
99
. get_unhealthy_counter ( & node. address ) ;
100
100
match heartbeat {
101
- Some ( _ ) => {
101
+ Some ( beat ) => {
102
102
// We have a heartbeat
103
+ if let Some ( version) = & beat. version {
104
+ if node. version . as_ref ( ) != Some ( version) {
105
+ let _: ( ) = self
106
+ . store_context
107
+ . node_store
108
+ . update_node_version ( & node. address , version) ;
109
+ }
110
+ }
111
+
103
112
if node. status == NodeStatus :: Unhealthy
104
113
|| node. status == NodeStatus :: WaitingForHeartbeat
105
114
{
@@ -181,6 +190,7 @@ mod tests {
181
190
status : NodeStatus :: WaitingForHeartbeat ,
182
191
task_id : None ,
183
192
task_state : None ,
193
+ version : None ,
184
194
} ;
185
195
186
196
let _: ( ) = app_state. store_context . node_store . add_node ( node. clone ( ) ) ;
@@ -189,6 +199,7 @@ mod tests {
189
199
task_id : None ,
190
200
task_state : None ,
191
201
metrics : None ,
202
+ version : Some ( env ! ( "CARGO_PKG_VERSION" ) . to_string ( ) ) ,
192
203
} ;
193
204
let _: ( ) = app_state. store_context . heartbeat_store . beat ( & heartbeat) ;
194
205
@@ -228,6 +239,7 @@ mod tests {
228
239
status : NodeStatus :: Healthy ,
229
240
task_id : None ,
230
241
task_state : None ,
242
+ version : None ,
231
243
} ;
232
244
233
245
let _: ( ) = app_state. store_context . node_store . add_node ( node. clone ( ) ) ;
@@ -267,6 +279,7 @@ mod tests {
267
279
status : NodeStatus :: Unhealthy ,
268
280
task_id : None ,
269
281
task_state : None ,
282
+ version : None ,
270
283
} ;
271
284
272
285
let _: ( ) = app_state. store_context . node_store . add_node ( node. clone ( ) ) ;
@@ -311,6 +324,7 @@ mod tests {
311
324
status : NodeStatus :: Unhealthy ,
312
325
task_id : None ,
313
326
task_state : None ,
327
+ version : None ,
314
328
} ;
315
329
316
330
let _: ( ) = app_state. store_context . node_store . add_node ( node. clone ( ) ) ;
@@ -355,6 +369,7 @@ mod tests {
355
369
status : NodeStatus :: Unhealthy ,
356
370
task_id : None ,
357
371
task_state : None ,
372
+ version : None ,
358
373
} ;
359
374
let _: ( ) = app_state
360
375
. store_context
@@ -366,6 +381,7 @@ mod tests {
366
381
task_id : None ,
367
382
task_state : None ,
368
383
metrics : None ,
384
+ version : Some ( env ! ( "CARGO_PKG_VERSION" ) . to_string ( ) ) ,
369
385
} ;
370
386
let _: ( ) = app_state. store_context . heartbeat_store . beat ( & heartbeat) ;
371
387
let _: ( ) = app_state. store_context . node_store . add_node ( node. clone ( ) ) ;
@@ -412,6 +428,7 @@ mod tests {
412
428
status : NodeStatus :: Unhealthy ,
413
429
task_id : None ,
414
430
task_state : None ,
431
+ version : None ,
415
432
} ;
416
433
let _: ( ) = app_state
417
434
. store_context
@@ -426,6 +443,7 @@ mod tests {
426
443
status : NodeStatus :: Healthy ,
427
444
task_id : None ,
428
445
task_state : None ,
446
+ version : None ,
429
447
} ;
430
448
431
449
let _: ( ) = app_state. store_context . node_store . add_node ( node2. clone ( ) ) ;
@@ -483,6 +501,7 @@ mod tests {
483
501
status : NodeStatus :: Unhealthy ,
484
502
task_id : None ,
485
503
task_state : None ,
504
+ version : None ,
486
505
} ;
487
506
488
507
let _: ( ) = app_state. store_context . node_store . add_node ( node. clone ( ) ) ;
@@ -519,6 +538,7 @@ mod tests {
519
538
task_id : None ,
520
539
task_state : None ,
521
540
metrics : None ,
541
+ version : Some ( env ! ( "CARGO_PKG_VERSION" ) . to_string ( ) ) ,
522
542
} ;
523
543
let _: ( ) = app_state. store_context . heartbeat_store . beat ( & heartbeat) ;
524
544
0 commit comments