From 56df9efb5702537d9e07835d5e0347008f9ccb3e Mon Sep 17 00:00:00 2001 From: boxdot Date: Fri, 6 Dec 2024 09:13:05 +0100 Subject: [PATCH] fix: do not create api client on every lookup (#230) --- coreclient/src/clients/api_clients.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/coreclient/src/clients/api_clients.rs b/coreclient/src/clients/api_clients.rs index 42c6cd0f..fe1637ad 100644 --- a/coreclient/src/clients/api_clients.rs +++ b/coreclient/src/clients/api_clients.rs @@ -2,6 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0-or-later +use std::collections::hash_map::Entry; use std::{collections::HashMap, sync::Mutex}; use phnxtypes::identifiers::Fqdn; @@ -40,10 +41,14 @@ impl ApiClients { .clients .lock() .map_err(|_| ApiClientsError::MutexPoisonError)?; - let client = clients - .entry(lookup_domain.clone()) - .or_insert(ApiClient::initialize(lookup_domain)?); - Ok(client.clone()) + match clients.entry(lookup_domain.clone()) { + Entry::Occupied(entry) => Ok(entry.get().clone()), + Entry::Vacant(entry) => { + let client = ApiClient::initialize(lookup_domain.clone())?; + entry.insert(client.clone()); + Ok(client) + } + } } pub(super) fn default_client(&self) -> Result {