From 9ace36d93cb0532fbfb945bf448126d9bbfe1286 Mon Sep 17 00:00:00 2001 From: Anna Khanova <32508607+khanova@users.noreply.github.com> Date: Sat, 20 Jan 2024 17:14:53 +0100 Subject: [PATCH] Proxy: do not store empty key (#6415) ## Problem Currently we store in cache even if the project is undefined. That makes invalidation impossible. ## Summary of changes Do not store if project id is empty. --- proxy/src/console/provider/neon.rs | 34 ++++++++++++++++-------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/proxy/src/console/provider/neon.rs b/proxy/src/console/provider/neon.rs index b61e7d2301..e8e36815c7 100644 --- a/proxy/src/console/provider/neon.rs +++ b/proxy/src/console/provider/neon.rs @@ -179,17 +179,18 @@ impl super::Api for Api { return Ok(Some(role_secret)); } let auth_info = self.do_get_auth_info(ctx, user_info).await?; - let project_id = auth_info.project_id.unwrap_or(ep.clone()); - if let Some(secret) = &auth_info.secret { - self.caches - .project_info - .insert_role_secret(&project_id, ep, user, secret.clone()) + if let Some(project_id) = auth_info.project_id { + if let Some(secret) = &auth_info.secret { + self.caches + .project_info + .insert_role_secret(&project_id, ep, user, secret.clone()) + } + self.caches.project_info.insert_allowed_ips( + &project_id, + ep, + Arc::new(auth_info.allowed_ips), + ); } - self.caches.project_info.insert_allowed_ips( - &project_id, - ep, - Arc::new(auth_info.allowed_ips), - ); // When we just got a secret, we don't need to invalidate it. Ok(auth_info.secret.map(Cached::new_uncached)) } @@ -212,15 +213,16 @@ impl super::Api for Api { let auth_info = self.do_get_auth_info(ctx, user_info).await?; let allowed_ips = Arc::new(auth_info.allowed_ips); let user = &user_info.user; - let project_id = auth_info.project_id.unwrap_or(ep.clone()); - if let Some(secret) = &auth_info.secret { + if let Some(project_id) = auth_info.project_id { + if let Some(secret) = &auth_info.secret { + self.caches + .project_info + .insert_role_secret(&project_id, ep, user, secret.clone()) + } self.caches .project_info - .insert_role_secret(&project_id, ep, user, secret.clone()) + .insert_allowed_ips(&project_id, ep, allowed_ips.clone()); } - self.caches - .project_info - .insert_allowed_ips(&project_id, ep, allowed_ips.clone()); Ok(Cached::new_uncached(allowed_ips)) }