Skip to content

Commit

Permalink
fix: prevent progress bar from panicking using workaround (#6940)
Browse files Browse the repository at this point in the history
* fix: prevent progress bar from panicking using workaround

* remove more progress bar lengths

* re-add set_len() calls commented out; restore one that shouldn't cause panics

* Update zebra-state/src/service/non_finalized_state.rs

Co-authored-by: teor <teor@riseup.net>

---------

Co-authored-by: teor <teor@riseup.net>
  • Loading branch information
conradoplg and teor2345 authored Jun 14, 2023
1 parent 4323097 commit fd78556
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 41 deletions.
14 changes: 6 additions & 8 deletions zebra-network/src/address_book_updater.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,19 +98,17 @@ impl AddressBookUpdater {
let address_info = *address_info.borrow_and_update();

address_bar
.set_pos(u64::try_from(address_info.num_addresses).expect("fits in u64"))
.set_len(u64::try_from(address_info.address_limit).expect("fits in u64"));
.set_pos(u64::try_from(address_info.num_addresses).expect("fits in u64"));
// .set_len(u64::try_from(address_info.address_limit).expect("fits in u64"));

let never_attempted = address_info.never_attempted_alternate
+ address_info.never_attempted_gossiped;

never_bar
.set_pos(u64::try_from(never_attempted).expect("fits in u64"))
.set_len(u64::try_from(address_info.address_limit).expect("fits in u64"));
never_bar.set_pos(u64::try_from(never_attempted).expect("fits in u64"));
// .set_len(u64::try_from(address_info.address_limit).expect("fits in u64"));

failed_bar
.set_pos(u64::try_from(address_info.failed).expect("fits in u64"))
.set_len(u64::try_from(address_info.address_limit).expect("fits in u64"));
failed_bar.set_pos(u64::try_from(address_info.failed).expect("fits in u64"));
// .set_len(u64::try_from(address_info.address_limit).expect("fits in u64"));
}
}

Expand Down
4 changes: 2 additions & 2 deletions zebra-network/src/peer_set/limit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ impl ActiveConnectionCounter {

#[cfg(feature = "progress-bar")]
self.connection_bar
.set_pos(u64::try_from(self.count).expect("fits in u64"))
.set_len(u64::try_from(self.limit).expect("fits in u64"));
.set_pos(u64::try_from(self.count).expect("fits in u64"));
// .set_len(u64::try_from(self.limit).expect("fits in u64"));

self.count
}
Expand Down
14 changes: 7 additions & 7 deletions zebra-state/src/service/non_finalized_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -662,9 +662,8 @@ impl NonFinalizedState {
.best_chain()
.map(|chain| chain.non_finalized_root_height().0 - 1);

chain_count_bar
.set_pos(u64::try_from(self.chain_count()).expect("fits in u64"))
.set_len(u64::try_from(MAX_NON_FINALIZED_CHAIN_FORKS).expect("fits in u64"));
chain_count_bar.set_pos(u64::try_from(self.chain_count()).expect("fits in u64"));
// .set_len(u64::try_from(MAX_NON_FINALIZED_CHAIN_FORKS).expect("fits in u64"));

if let Some(finalized_tip_height) = finalized_tip_height {
chain_count_bar.desc(format!("Finalized Root {finalized_tip_height}"));
Expand Down Expand Up @@ -701,10 +700,11 @@ impl NonFinalizedState {
// - the chain this bar was previously assigned to might have changed position.
chain_length_bar
.label(format!("Fork {fork_height}"))
.set_pos(u64::try_from(chain.len()).expect("fits in u64"))
.set_len(u64::from(
zebra_chain::transparent::MIN_TRANSPARENT_COINBASE_MATURITY,
));
.set_pos(u64::try_from(chain.len()).expect("fits in u64"));
// TODO: should this be MAX_BLOCK_REORG_HEIGHT?
// .set_len(u64::from(
// zebra_chain::transparent::MIN_TRANSPARENT_COINBASE_MATURITY,
// ));

// display work as bits
let mut desc = format!(
Expand Down
36 changes: 12 additions & 24 deletions zebrad/src/components/mempool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -411,41 +411,29 @@ impl Mempool {
|| self.transaction_cost_bar.is_none()
|| self.rejected_count_bar.is_none())
{
let max_transaction_count = self.config.tx_cost_limit
let _max_transaction_count = self.config.tx_cost_limit
/ zebra_chain::transaction::MEMPOOL_TRANSACTION_COST_THRESHOLD;

self.queued_count_bar = Some(
howudoin::new()
.label("Mempool Queue")
.set_pos(0u64)
.set_len(
u64::try_from(downloads::MAX_INBOUND_CONCURRENCY).expect("fits in u64"),
),
);
self.queued_count_bar = Some(*howudoin::new().label("Mempool Queue").set_pos(0u64));
// .set_len(
// u64::try_from(downloads::MAX_INBOUND_CONCURRENCY).expect("fits in u64"),
// ),

self.transaction_count_bar = Some(
howudoin::new()
.label("Mempool Txs")
.set_pos(0u64)
.set_len(max_transaction_count),
);
self.transaction_count_bar = Some(*howudoin::new().label("Mempool Txs").set_pos(0u64));
// .set_len(max_transaction_count),

self.transaction_cost_bar = Some(
howudoin::new()
.label("Mempool Cost")
.set_pos(0u64)
.set_len(self.config.tx_cost_limit)
// .set_len(self.config.tx_cost_limit)
.fmt_as_bytes(true),
);

self.rejected_count_bar = Some(
howudoin::new()
.label("Mempool Rejects")
.set_pos(0u64)
.set_len(
u64::try_from(storage::MAX_EVICTION_MEMORY_ENTRIES).expect("fits in u64"),
),
);
self.rejected_count_bar = Some(*howudoin::new().label("Mempool Rejects").set_pos(0u64));
// .set_len(
// u64::try_from(storage::MAX_EVICTION_MEMORY_ENTRIES).expect("fits in u64"),
// ),
}

// Update if the mempool has ever been active
Expand Down

0 comments on commit fd78556

Please sign in to comment.