@@ -109,67 +109,70 @@ pub fn init_system_metrics_ticker(
109109 accountsdb : & Arc < AccountsDb > ,
110110 token : CancellationToken ,
111111) -> tokio:: task:: JoinHandle < ( ) > {
112- // fn try_set_ledger_counts(ledger: &Ledger) {
113- // macro_rules! try_set_ledger_count {
114- // ($name:ident) => {
115- // paste::paste! {
116- // match ledger.[< count_ $name >]() {
117- // Ok(count) => {
118- // metrics::[< set_ledger_ $name _count >](count);
119- // }
120- // Err(err) => warn!(
121- // "Failed to get ledger {} count: {:?}",
122- // stringify!($name),
123- // err
124- // ),
125- // }
126- // }
127- // };
128- // }
129- // try_set_ledger_count!(block_times);
130- // try_set_ledger_count!(blockhashes);
131- // try_set_ledger_count!(slot_signatures);
132- // try_set_ledger_count!(address_signatures);
133- // try_set_ledger_count!(transaction_status);
134- // try_set_ledger_count!(transaction_successful_status);
135- // try_set_ledger_count!(transaction_failed_status);
136- // try_set_ledger_count!(transactions);
137- // try_set_ledger_count!(transaction_memos);
138- // try_set_ledger_count!(perf_samples);
139- // try_set_ledger_count!(account_mod_data);
140- // }
141- //
142- // fn try_set_ledger_storage_size(ledger: &Ledger) {
143- // match ledger.storage_size() {
144- // Ok(byte_size) => metrics::set_ledger_size(byte_size),
145- // Err(err) => warn!("Failed to get ledger storage size: {:?}", err),
146- // }
147- // }
148- // fn set_accounts_storage_size(bank: &Bank) {
149- // let byte_size = bank.accounts_db_storage_size();
150- // metrics::set_accounts_size(byte_size);
151- // }
152- // fn set_accounts_count(bank: &Bank) {
153- // metrics::set_accounts_count(bank.accounts_db.get_accounts_count());
154- // }
155- //
156- // let ledger = ledger.clone();
157- // let bank = bank.clone();
158- // tokio::task::spawn(async move {
159- // loop {
160- // tokio::select! {
161- // _ = tokio::time::sleep(tick_duration) => {
162- // try_set_ledger_storage_size(&ledger);
163- // set_accounts_storage_size(&bank);
164- // try_set_ledger_counts(&ledger);
165- // set_accounts_count(&bank);
166- // },
167- // _ = token.cancelled() => {
168- // break;
169- // }
170- // }
171- // }
172- // })
112+ fn try_set_ledger_counts ( ledger : & Ledger ) {
113+ macro_rules! try_set_ledger_count {
114+ ( $name: ident) => {
115+ paste:: paste! {
116+ match ledger. [ < count_ $name >] ( ) {
117+ Ok ( count) => {
118+ metrics:: [ < set_ledger_ $name _count >] ( count) ;
119+ }
120+ Err ( err) => warn!(
121+ "Failed to get ledger {} count: {:?}" ,
122+ stringify!( $name) ,
123+ err
124+ ) ,
125+ }
126+ }
127+ } ;
128+ }
129+ try_set_ledger_count ! ( block_times) ;
130+ try_set_ledger_count ! ( blockhashes) ;
131+ try_set_ledger_count ! ( slot_signatures) ;
132+ try_set_ledger_count ! ( address_signatures) ;
133+ try_set_ledger_count ! ( transaction_status) ;
134+ try_set_ledger_count ! ( transaction_successful_status) ;
135+ try_set_ledger_count ! ( transaction_failed_status) ;
136+ try_set_ledger_count ! ( transactions) ;
137+ try_set_ledger_count ! ( transaction_memos) ;
138+ try_set_ledger_count ! ( perf_samples) ;
139+ try_set_ledger_count ! ( account_mod_data) ;
140+ }
141+
142+ fn try_set_ledger_storage_size ( ledger : & Ledger ) {
143+ match ledger. storage_size ( ) {
144+ Ok ( byte_size) => metrics:: set_ledger_size ( byte_size) ,
145+ Err ( err) => warn ! ( "Failed to get ledger storage size: {:?}" , err) ,
146+ }
147+ }
148+ fn set_accounts_storage_size ( accounts_db : & AccountsDb ) {
149+ let byte_size = accounts_db. storage_size ( ) ;
150+ metrics:: set_accounts_size ( byte_size. try_into ( ) . unwrap_or ( i64:: MAX ) ) ;
151+ }
152+ fn set_accounts_count ( accounts_db : & AccountsDb ) {
153+ metrics:: set_accounts_count (
154+ accounts_db
155+ . get_accounts_count ( )
156+ . try_into ( )
157+ . unwrap_or ( i64:: MAX ) ,
158+ ) ;
159+ }
173160
174- tokio:: task:: spawn ( async move { } )
161+ let ledger = ledger. clone ( ) ;
162+ let bank = accountsdb. clone ( ) ;
163+ tokio:: task:: spawn ( async move {
164+ loop {
165+ tokio:: select! {
166+ _ = tokio:: time:: sleep( tick_duration) => {
167+ try_set_ledger_storage_size( & ledger) ;
168+ set_accounts_storage_size( & bank) ;
169+ metrics:: observe_columns_count_duration( || try_set_ledger_counts( & ledger) ) ;
170+ set_accounts_count( & bank) ;
171+ } ,
172+ _ = token. cancelled( ) => {
173+ break ;
174+ }
175+ }
176+ }
177+ } )
175178}
0 commit comments