@@ -20,6 +20,7 @@ use super::super::rpc::RPCResult;
2020use super :: codechain_rpc:: CodeChainRPC ;
2121use super :: service:: { Message as ServiceMessage , ServiceSender } ;
2222use super :: types:: { AgentGetInfoResponse , CodeChainCallRPCResponse } ;
23+ use crate :: common_rpc_types:: HardwareUsage ;
2324use crate :: noti:: Noti ;
2425
2526#[ derive( Clone , PartialEq , Debug ) ]
@@ -185,7 +186,8 @@ impl Agent {
185186
186187 let mut count_of_no_enough_connections = 0usize ;
187188 let mut previous_best_block_number = 0 ;
188- let mut count_of_no_block_update = 00usize ;
189+ let mut count_of_no_block_update = 0usize ;
190+ let mut disk_usage_alert_sent = false ;
189191 loop {
190192 ctrace ! ( "Agent-{} update" , self . id) ;
191193 let update_result = self . update ( ) ?;
@@ -205,6 +207,7 @@ impl Agent {
205207 network_id,
206208 number_of_peers,
207209 best_block_number,
210+ disk_usage,
208211 } ) = update_result
209212 {
210213 let node_name = node_name. expect ( "Updated" ) ;
@@ -232,6 +235,19 @@ impl Agent {
232235 self . noti . warn ( & network_id, & format ! ( "{} no block update in 30 seconds." , node_name) ) ;
233236 }
234237 }
238+
239+ const ONE_GB : i64 = 1_000_000_000 ;
240+ if !disk_usage_alert_sent {
241+ if disk_usage. available < ONE_GB {
242+ self . noti . warn (
243+ & network_id,
244+ & format ! ( "{} has only {} MB free space." , node_name, disk_usage. available / 1_000_000 ) ,
245+ ) ;
246+ disk_usage_alert_sent = true ;
247+ }
248+ } else if ONE_GB < disk_usage. available {
249+ disk_usage_alert_sent = false ;
250+ }
235251 }
236252 thread:: sleep ( Duration :: new ( 10 , 0 ) ) ;
237253 }
@@ -304,6 +320,7 @@ impl Agent {
304320
305321 ctrace ! ( "Update state from {:?} to {:?}" , * state, new_state) ;
306322 let number_of_peers = peers. len ( ) ;
323+ let disk_usage = hardware. disk_usage ;
307324 self . db_service . update_agent_query_result ( db:: AgentQueryResult {
308325 name : info. name . clone ( ) ,
309326 status : info. status ,
@@ -325,6 +342,7 @@ impl Agent {
325342 network_id : network_id. unwrap_or_default ( ) ,
326343 number_of_peers,
327344 best_block_number : best_block_id. map ( |id| id. block_number as u64 ) ,
345+ disk_usage,
328346 } ) )
329347 }
330348
@@ -389,6 +407,7 @@ struct UpdateResult {
389407 network_id : String ,
390408 number_of_peers : usize ,
391409 best_block_number : Option < u64 > ,
410+ disk_usage : HardwareUsage ,
392411}
393412
394413impl Drop for Agent {
0 commit comments