From 4917de2b325b1d66fc293a3e51039e7f1fc4285d Mon Sep 17 00:00:00 2001 From: Orne Brocaar Date: Tue, 28 Mar 2023 14:04:14 +0100 Subject: [PATCH] Earlier db initialization + change unwrap for error. Closes #147. --- chirpstack/src/cmd/root.rs | 2 +- chirpstack/src/storage/mod.rs | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/chirpstack/src/cmd/root.rs b/chirpstack/src/cmd/root.rs index 6b308a47..f5bafb5e 100644 --- a/chirpstack/src/cmd/root.rs +++ b/chirpstack/src/cmd/root.rs @@ -11,12 +11,12 @@ pub async fn run() -> Result<()> { "Starting ChirpStack LoRaWAN Network Server" ); + storage::setup().await?; region::setup()?; backend::setup()?; adr::setup().await?; integration::setup().await?; gateway::backend::setup().await?; - storage::setup().await?; downlink::setup().await; api::setup().await?; diff --git a/chirpstack/src/storage/mod.rs b/chirpstack/src/storage/mod.rs index 08f35997..5538cc21 100644 --- a/chirpstack/src/storage/mod.rs +++ b/chirpstack/src/storage/mod.rs @@ -219,20 +219,25 @@ pub async fn setup() -> Result<()> { Ok(()) } -pub fn get_db_pool() -> PgPool { +pub fn get_db_pool() -> Result { let pool_r = PG_POOL.read().unwrap(); - let pool = pool_r.as_ref().unwrap().clone(); - pool + let pool = pool_r + .as_ref() + .ok_or_else(|| anyhow!("PostgreSQL connection pool is not initialized (yet)"))? + .clone(); + Ok(pool) } pub fn get_db_conn() -> Result { - let pool = get_db_pool(); - pool.get().context("Get connection from pool error") + let pool = get_db_pool()?; + Ok(pool.get()?) } pub fn get_redis_conn() -> Result { let pool_r = REDIS_POOL.read().unwrap(); - let pool = pool_r.as_ref().unwrap(); + let pool = pool_r + .as_ref() + .ok_or_else(|| anyhow!("Redis connection pool is not initialized (yet)"))?; Ok(match pool { RedisPool::Client(v) => RedisPoolConnection::Client(v.get()?), RedisPool::ClusterClient(v) => RedisPoolConnection::ClusterClient(v.get()?),