From 879d3158c294c368850df31403270bafe7221714 Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Sun, 7 Jul 2024 12:02:41 +0200 Subject: [PATCH] don't call getPeerDirectory on every call --- .../PersistentRemoteHostsService.java | 4 ++++ .../peertrust/PeerRolesAugmentor.java | 21 +++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentRemoteHostsService.java b/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentRemoteHostsService.java index a116d534..fcbed4da 100644 --- a/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentRemoteHostsService.java +++ b/server/src/main/java/com/usatiuk/dhfs/objects/repository/PersistentRemoteHostsService.java @@ -219,6 +219,10 @@ public class PersistentRemoteHostsService { return getPeerDirectory().runReadLocked(JObject.ResolutionStrategy.LOCAL_ONLY, (m, d) -> d.getPeers().contains(uuid)); } + public PersistentPeerInfo getHost(UUID uuid) { + return getPeer(uuid).runReadLocked(JObject.ResolutionStrategy.LOCAL_ONLY, (m, d) -> d); + } + public KeyPair getSelfKeypair() { return _persistentData.runReadLocked(PersistentRemoteHostsData::getSelfKeyPair); } diff --git a/server/src/main/java/com/usatiuk/dhfs/objects/repository/peertrust/PeerRolesAugmentor.java b/server/src/main/java/com/usatiuk/dhfs/objects/repository/peertrust/PeerRolesAugmentor.java index 04f06d89..da90e7d6 100644 --- a/server/src/main/java/com/usatiuk/dhfs/objects/repository/peertrust/PeerRolesAugmentor.java +++ b/server/src/main/java/com/usatiuk/dhfs/objects/repository/peertrust/PeerRolesAugmentor.java @@ -10,6 +10,7 @@ import io.smallrye.mutiny.Uni; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; +import java.util.UUID; import java.util.function.Supplier; @ApplicationScoped @@ -28,17 +29,19 @@ public class PeerRolesAugmentor implements SecurityIdentityAugmentor { } else { QuarkusSecurityIdentity.Builder builder = QuarkusSecurityIdentity.builder(identity); - var entry = persistentRemoteHostsService.getHosts().stream() - .filter(i -> i.getUuid().toString() - .equals(identity.getPrincipal().getName().substring(3))) - .findFirst(); - if (entry.isEmpty()) return () -> identity; + var uuid = identity.getPrincipal().getName().substring(3); - if (!entry.get().getCertificate().equals(identity.getCredential(CertificateCredential.class).getCertificate())) + try { + var entry = persistentRemoteHostsService.getHost(UUID.fromString(uuid)); + + if (!entry.getCertificate().equals(identity.getCredential(CertificateCredential.class).getCertificate())) + return () -> identity; + + builder.addRole("cluster-member"); + return builder::build; + } catch (Exception e) { return () -> identity; - - builder.addRole("cluster-member"); - return builder::build; + } } } }