From f8e9ff8f56b92ff65c11e8eedc664005929af62d Mon Sep 17 00:00:00 2001 From: Hellblazer Date: Tue, 25 Apr 2023 19:43:57 -0700 Subject: [PATCH] Use agent for identity in delegation gossip --- grpc/src/main/proto/demesne.proto | 2 +- .../salesforce/apollo/archipelago/Enclave.java | 2 +- .../com/salesforce/apollo/model/SubDomain.java | 17 +++++++++-------- .../apollo/model/comms/DelegationServer.java | 12 +++++------- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/grpc/src/main/proto/demesne.proto b/grpc/src/main/proto/demesne.proto index f2f9de6f2..04cba01fd 100644 --- a/grpc/src/main/proto/demesne.proto +++ b/grpc/src/main/proto/demesne.proto @@ -52,7 +52,7 @@ message DelegationUpdate { } message Delegate { - int64 view = 1; + utils.Digeste context = 1; utils.Digeste delegator = 2; utils.Digeste delegate = 3; } diff --git a/memberships/src/main/java/com/salesforce/apollo/archipelago/Enclave.java b/memberships/src/main/java/com/salesforce/apollo/archipelago/Enclave.java index e9138595f..9578cc578 100644 --- a/memberships/src/main/java/com/salesforce/apollo/archipelago/Enclave.java +++ b/memberships/src/main/java/com/salesforce/apollo/archipelago/Enclave.java @@ -57,7 +57,7 @@ * */ public class Enclave implements RouterSupplier { - interface RoutingClientIdentity extends ClientIdentity { + public interface RoutingClientIdentity extends ClientIdentity { Digest getAgent(); } diff --git a/model/src/main/java/com/salesforce/apollo/model/SubDomain.java b/model/src/main/java/com/salesforce/apollo/model/SubDomain.java index ecb7ffb11..c629fc9ae 100644 --- a/model/src/main/java/com/salesforce/apollo/model/SubDomain.java +++ b/model/src/main/java/com/salesforce/apollo/model/SubDomain.java @@ -10,6 +10,8 @@ import java.nio.file.Path; import java.time.Duration; +import java.util.HashMap; +import java.util.Map; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.ScheduledFuture; @@ -27,6 +29,7 @@ import com.salesfoce.apollo.demesne.proto.SignedDelegate; import com.salesfoce.apollo.utils.proto.Biff; import com.salesfoce.apollo.utils.proto.Digeste; +import com.salesforce.apollo.archipelago.Enclave.RoutingClientIdentity; import com.salesforce.apollo.archipelago.RouterImpl.CommonCommunications; import com.salesforce.apollo.choam.Parameters.Builder; import com.salesforce.apollo.choam.Parameters.RuntimeParameters; @@ -50,19 +53,18 @@ * */ public class SubDomain extends Domain { - private static final String DELEGATES_MAP_TEMPLATE = "delegates-%s"; - private static final String DELEGATIONS_MAP_TEMPLATE = "delegations-%s"; - private final static Logger log = LoggerFactory.getLogger(SubDomain.class); + private static final String DELEGATES_MAP_TEMPLATE = "delegates-%s"; + private final static Logger log = LoggerFactory.getLogger(SubDomain.class); private final MVMap delegates; @SuppressWarnings("unused") - private final MVMap delegations; + private final Map delegations = new HashMap<>(); private final double fpr; private final Duration gossipInterval; private final int maxTransfer; private final RingCommunications ring; private ScheduledFuture scheduled; - private final AtomicBoolean started = new AtomicBoolean(); + private final AtomicBoolean started = new AtomicBoolean(); private final MVStore store; public SubDomain(ControlledIdentifierMember member, Builder params, Path checkpointBaseDir, @@ -87,12 +89,11 @@ public SubDomain(ControlledIdentifierMember member, Builder prm, String dbURL, P builder.setFileName(checkpointBaseDir.resolve(identifier).toFile()); store = builder.build(); delegates = store.openMap(DELEGATES_MAP_TEMPLATE.formatted(identifier)); - delegations = store.openMap(DELEGATIONS_MAP_TEMPLATE.formatted(identifier)); CommonCommunications comms = params.communications() .create(member, params.context().getId(), delegation(), "delegates", - r -> new DelegationServer(params.communications() - .getClientIdentityProvider(), + r -> new DelegationServer((RoutingClientIdentity) params.communications() + .getClientIdentityProvider(), r, null)); ring = new RingCommunications(params.context(), member, comms, params.exec()); this.gossipInterval = gossipInterval; diff --git a/model/src/main/java/com/salesforce/apollo/model/comms/DelegationServer.java b/model/src/main/java/com/salesforce/apollo/model/comms/DelegationServer.java index cc90f50dd..050ad8b5b 100644 --- a/model/src/main/java/com/salesforce/apollo/model/comms/DelegationServer.java +++ b/model/src/main/java/com/salesforce/apollo/model/comms/DelegationServer.java @@ -11,8 +11,8 @@ import com.salesfoce.apollo.demesne.proto.DelegationGrpc.DelegationImplBase; import com.salesfoce.apollo.demesne.proto.DelegationUpdate; import com.salesfoce.apollo.utils.proto.Biff; +import com.salesforce.apollo.archipelago.Enclave.RoutingClientIdentity; import com.salesforce.apollo.archipelago.RoutableService; -import com.salesforce.apollo.protocols.ClientIdentity; import io.grpc.stub.StreamObserver; @@ -21,13 +21,11 @@ * */ public class DelegationServer extends DelegationImplBase { - - private final ClientIdentity identity; - + private final RoutingClientIdentity identity; private final OuterServerMetrics metrics; private final RoutableService router; - public DelegationServer(ClientIdentity clientIdentity, RoutableService router, + public DelegationServer(RoutingClientIdentity clientIdentity, RoutableService router, OuterServerMetrics metrics) { this.router = router; this.identity = clientIdentity; @@ -41,7 +39,7 @@ public void gossip(Biff request, StreamObserver responseObserv metrics.inboundBandwidth().mark(request.getSerializedSize()); metrics.inboundGossip().mark(request.getSerializedSize()); } - var from = identity.getFrom(); + var from = identity.getAgent(); router.evaluate(responseObserver, delegation -> { try { var update = delegation.gossip(request, from); @@ -67,7 +65,7 @@ public void update(DelegationUpdate request, StreamObserver responseObser metrics.inboundBandwidth().mark(request.getSerializedSize()); metrics.inboundUpdate().mark(request.getSerializedSize()); } - var from = identity.getFrom(); + var from = identity.getAgent(); router.evaluate(responseObserver, delegation -> { try { delegation.update(request, from);