diff --git a/matching_engine/src/routes/ui_routes/dashboard.rs b/matching_engine/src/routes/ui_routes/dashboard.rs index e4cac94..b7b266f 100644 --- a/matching_engine/src/routes/ui_routes/dashboard.rs +++ b/matching_engine/src/routes/ui_routes/dashboard.rs @@ -60,11 +60,16 @@ pub async fn get_dashboard( _local_ask_store: Data>>, _local_generator_store: Data>>, ) -> actix_web::Result { - if let Some(response) = DASHBOARD_RESPONSE - .try_read() - .unwrap() - .get_if_valid(Duration::from_secs(10)) - { + let dashboard_cache = match DASHBOARD_RESPONSE.try_read() { + Ok(data) => data, + _ => { + return Ok(HttpResponse::Locked().json(WelcomeResponse { + status: "Resource Busy".into(), + })) + } + }; + + if let Some(response) = dashboard_cache.get_if_valid(Duration::from_secs(10)) { // Return the cached response if valid return Ok(HttpResponse::Ok().json(response)); } diff --git a/matching_engine/src/routes/ui_routes/generators.rs b/matching_engine/src/routes/ui_routes/generators.rs index bc08f0b..3c70be7 100644 --- a/matching_engine/src/routes/ui_routes/generators.rs +++ b/matching_engine/src/routes/ui_routes/generators.rs @@ -52,11 +52,16 @@ pub async fn get_generators_all( ) -> actix_web::Result { // Step 1: Check if there's a cached response (lock for reading) - if let Some(response) = GENERATOR_RESPONSE - .try_read() - .unwrap() - .get_if_valid(Duration::from_secs(10)) - { + let generator_cache = match GENERATOR_RESPONSE.try_read() { + Ok(data) => data, + _ => { + return Ok(HttpResponse::Locked().json(WelcomeResponse { + status: "Resource Busy".into(), + })) + } + }; + + if let Some(response) = generator_cache.get_if_valid(Duration::from_secs(10)) { // Return the cached response if valid return Ok(HttpResponse::Ok().json(response)); } diff --git a/matching_engine/src/routes/ui_routes/markets.rs b/matching_engine/src/routes/ui_routes/markets.rs index 92b928e..71794a3 100644 --- a/matching_engine/src/routes/ui_routes/markets.rs +++ b/matching_engine/src/routes/ui_routes/markets.rs @@ -56,11 +56,16 @@ pub async fn total_market_info( ) -> actix_web::Result { // Step 1: Check if there's a cached response (lock for reading) - if let Some(response) = MARKET_RESPONSE - .try_read() - .unwrap() - .get_if_valid(Duration::from_secs(10)) - { + let market_cache = match MARKET_RESPONSE.try_read() { + Ok(data) => data, + _ => { + return Ok(HttpResponse::Locked().json(WelcomeResponse { + status: "Resource Busy".into(), + })) + } + }; + + if let Some(response) = market_cache.get_if_valid(Duration::from_secs(10)) { // Return the cached response if valid return Ok(HttpResponse::Ok().json(response)); }