From 6672d640f57efa16076290cf9f44b77afc4f6299 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2019 11:42:42 -0700 Subject: [PATCH] Tune bench-tps blockhash poller and stop panicking (bp #7563) (#7567) * Tune bench-tps blockhash poller and stop panicking (cherry picked from commit 4b3176a9a1cbd8e2aee79fa939aa2d8c4d97e5d2) * Revert blockhash sleep (cherry picked from commit e82db6fc2fe33daa677db68d088c088e0ced5540) * @sakridge feedback (cherry picked from commit 848fe51f3d8dbae3550d0ad7934b1d9868c5c2a6) * reduce error logging (cherry picked from commit a096ade34542a6b5162aee1193a8820b46663259) * clippy (cherry picked from commit 54f16ca2bf4a8a06205dfa3dcf39671969989285) --- bench-tps/src/bench.rs | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/bench-tps/src/bench.rs b/bench-tps/src/bench.rs index 6900aec637..6c8163000b 100644 --- a/bench-tps/src/bench.rs +++ b/bench-tps/src/bench.rs @@ -24,6 +24,7 @@ use std::{ cmp, collections::VecDeque, net::SocketAddr, + process::exit, sync::{ atomic::{AtomicBool, AtomicIsize, AtomicUsize, Ordering}, Arc, RwLock, @@ -402,29 +403,39 @@ fn poll_blockhash( client: &Arc, id: &Pubkey, ) { - let mut blockhash_time; + let mut blockhash_last_updated = Instant::now(); + let mut last_error_log = Instant::now(); loop { - blockhash_time = Instant::now(); - loop { + let blockhash_updated = { let old_blockhash = *blockhash.read().unwrap(); if let Ok((new_blockhash, _fee)) = client.get_new_blockhash(&old_blockhash) { *blockhash.write().unwrap() = new_blockhash; - break; + blockhash_last_updated = Instant::now(); + true } else { - if blockhash_time.elapsed().as_secs() > 30 { - panic!("Blockhash is not updating"); + if blockhash_last_updated.elapsed().as_secs() > 120 { + eprintln!("Blockhash is stuck"); + exit(1) + } else if blockhash_last_updated.elapsed().as_secs() > 30 + && last_error_log.elapsed().as_secs() >= 1 + { + last_error_log = Instant::now(); + error!("Blockhash is not updating"); } - sleep(Duration::from_millis(50)); - continue; + false } - } + }; - let balance = client.get_balance(id).unwrap_or(0); - metrics_submit_lamport_balance(balance); + if blockhash_updated { + let balance = client.get_balance(id).unwrap_or(0); + metrics_submit_lamport_balance(balance); + } if exit_signal.load(Ordering::Relaxed) { break; } + + sleep(Duration::from_millis(50)); } }