From 8be01c021ee8a748454ac65cc6a87337e41a2ead Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 6 Jul 2023 16:43:05 +0000 Subject: [PATCH] Require DB insertions to complete in fifteen seconds For some reason the mainnet server hung, seemingly on the DB insertion task. This will improve debugging by simply crashing if an insertion takes longer than five seconds. --- src/persistence.rs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/persistence.rs b/src/persistence.rs index 99fab32..ac66733 100644 --- a/src/persistence.rs +++ b/src/persistence.rs @@ -10,6 +10,8 @@ use tokio_postgres::NoTls; use crate::{config, TestLogger}; use crate::types::GossipMessage; +const POSTGRES_INSERT_TIMEOUT: Duration = Duration::from_secs(15); + pub(crate) struct GossipPersister { gossip_persistence_receiver: mpsc::Receiver, network_graph: Arc>, @@ -115,17 +117,14 @@ impl GossipPersister { let mut announcement_signed = Vec::new(); announcement.write(&mut announcement_signed).unwrap(); - let result = client + tokio::time::timeout(POSTGRES_INSERT_TIMEOUT, client .execute("INSERT INTO channel_announcements (\ short_channel_id, \ announcement_signed \ ) VALUES ($1, $2) ON CONFLICT (short_channel_id) DO NOTHING", &[ &scid, &announcement_signed - ]).await; - if result.is_err() { - panic!("error: {}", result.err().unwrap()); - } + ])).await.unwrap().unwrap(); } GossipMessage::ChannelUpdate(update) => { let scid = update.contents.short_channel_id as i64; @@ -146,7 +145,7 @@ impl GossipPersister { let mut update_signed = Vec::new(); update.write(&mut update_signed).unwrap(); - let result = client + tokio::time::timeout(POSTGRES_INSERT_TIMEOUT, client .execute("INSERT INTO channel_updates (\ short_channel_id, \ timestamp, \ @@ -171,10 +170,7 @@ impl GossipPersister { &fee_proportional_millionths, &htlc_maximum_msat, &update_signed - ]).await; - if result.is_err() { - panic!("error: {}", result.err().unwrap()); - } + ])).await.unwrap().unwrap(); } } } -- 2.39.5