From fedcaf8e3047c03632bbc8f9ef285cecfdb8b482 Mon Sep 17 00:00:00 2001 From: Hugo Firth Date: Tue, 20 Mar 2018 12:32:09 +0000 Subject: [PATCH] Made changes requested in review by Martin Furmanski --- .../load_balancing/procedure/ResultFormatV1.java | 7 ++----- .../multi_cluster/MultiClusterRoutingResult.java | 13 ++++++------- .../procedure/GetSubClusterRoutersProcedure.java | 9 ++++----- .../procedure/GetSuperClusterRoutersProcedure.java | 9 ++++----- .../procedure/MultiClusterRoutingResultFormat.java | 9 ++++----- .../routing/procedure/ProcedureNamesEnum.java | 1 - ...ltFormat.java => RoutingResultFormatHelper.java} | 4 ++-- .../scenarios/MultiClusterRoutingIT.java | 4 +--- 8 files changed, 23 insertions(+), 33 deletions(-) rename enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/{RoutingResultFormat.java => RoutingResultFormatHelper.java} (92%) diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/load_balancing/procedure/ResultFormatV1.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/load_balancing/procedure/ResultFormatV1.java index 7c06cd53a6660..5314bda17b77e 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/load_balancing/procedure/ResultFormatV1.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/load_balancing/procedure/ResultFormatV1.java @@ -26,26 +26,23 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; -import java.util.stream.Stream; import org.neo4j.causalclustering.routing.Endpoint; import org.neo4j.causalclustering.routing.load_balancing.LoadBalancingProcessor; import org.neo4j.causalclustering.routing.load_balancing.LoadBalancingResult; import org.neo4j.causalclustering.routing.Role; -import org.neo4j.causalclustering.routing.procedure.RoutingResultFormat; -import org.neo4j.helpers.AdvertisedSocketAddress; import org.neo4j.helpers.SocketAddress; import static java.util.concurrent.TimeUnit.MILLISECONDS; -import static java.util.stream.Collectors.toList; import static org.neo4j.causalclustering.routing.Role.READ; import static org.neo4j.causalclustering.routing.Role.ROUTE; import static org.neo4j.causalclustering.routing.Role.WRITE; +import static org.neo4j.causalclustering.routing.procedure.RoutingResultFormatHelper.parseEndpoints; /** * The result format of GetServersV1 and GetServersV2 procedures. */ -public class ResultFormatV1 extends RoutingResultFormat +public class ResultFormatV1 { private static final String ROLE_KEY = "role"; private static final String ADDRESSES_KEY = "addresses"; diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/MultiClusterRoutingResult.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/MultiClusterRoutingResult.java index c4f0c23cd2278..10b87aeea9e8c 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/MultiClusterRoutingResult.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/MultiClusterRoutingResult.java @@ -32,12 +32,12 @@ public class MultiClusterRoutingResult implements RoutingResult { private final Map> routers; - private final long ttl; + private final long timeToLiveMillis; - public MultiClusterRoutingResult( Map> routers, long ttl ) + public MultiClusterRoutingResult( Map> routers, long timeToLiveMillis ) { this.routers = routers; - this.ttl = ttl; + this.timeToLiveMillis = timeToLiveMillis; } public Map> routers() @@ -47,7 +47,7 @@ public Map> routers() public long ttlMillis() { - return ttl; + return timeToLiveMillis; } @Override @@ -62,14 +62,13 @@ public boolean equals( Object o ) return false; } MultiClusterRoutingResult that = (MultiClusterRoutingResult) o; - return ttl == that.ttl && Objects.equals( routers, that.routers ); + return timeToLiveMillis == that.timeToLiveMillis && Objects.equals( routers, that.routers ); } @Override public int hashCode() { - - return Objects.hash( routers, ttl ); + return Objects.hash( routers, timeToLiveMillis ); } } diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/GetSubClusterRoutersProcedure.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/GetSubClusterRoutersProcedure.java index 3fe3e58e93b10..b892bb88f2e8c 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/GetSubClusterRoutersProcedure.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/GetSubClusterRoutersProcedure.java @@ -54,17 +54,17 @@ public class GetSubClusterRoutersProcedure implements CallableProcedure procedureSignature( GET_SUB_CLUSTER_ROUTERS.fullyQualifiedProcedureName() ) .in( DATABASE.parameterName(), Neo4jTypes.NTString ) .out( TTL.parameterName(), Neo4jTypes.NTInteger ) - .out( ROUTERS.parameterName(), Neo4jTypes.NTMap ) + .out( ROUTERS.parameterName(), Neo4jTypes.NTList( Neo4jTypes.NTMap ) ) .description( DESCRIPTION ) .build(); private final TopologyService topologyService; - private final Config config; + private final long timeToLiveMillis; public GetSubClusterRoutersProcedure( TopologyService topologyService, Config config ) { this.topologyService = topologyService; - this.config = config; + this.timeToLiveMillis = config.get( CausalClusteringSettings.cluster_routing_ttl ).toMillis(); } @Override @@ -79,12 +79,11 @@ public RawIterator apply( Context ctx, Object[] inp @SuppressWarnings( "unchecked" ) String dbName = (String) input[0]; List routers = routeEndpoints( dbName ); - long ttl = config.get( CausalClusteringSettings.cluster_routing_ttl ).toMillis(); HashMap> routerMap = new HashMap<>(); routerMap.put( dbName, routers ); - MultiClusterRoutingResult result = new MultiClusterRoutingResult( routerMap, ttl ); + MultiClusterRoutingResult result = new MultiClusterRoutingResult( routerMap, timeToLiveMillis ); return RawIterator.of( MultiClusterRoutingResultFormat.build( result ) ); } diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/GetSuperClusterRoutersProcedure.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/GetSuperClusterRoutersProcedure.java index 7489575c465b4..285e65370d918 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/GetSuperClusterRoutersProcedure.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/GetSuperClusterRoutersProcedure.java @@ -53,17 +53,17 @@ public class GetSuperClusterRoutersProcedure implements CallableProcedure private final ProcedureSignature procedureSignature = procedureSignature( GET_SUPER_CLUSTER_ROUTERS.fullyQualifiedProcedureName() ) .out( TTL.parameterName(), Neo4jTypes.NTInteger ) - .out( ROUTERS.parameterName(), Neo4jTypes.NTMap ) + .out( ROUTERS.parameterName(), Neo4jTypes.NTList( Neo4jTypes.NTMap ) ) .description( DESCRIPTION ) .build(); private final TopologyService topologyService; - private final Config config; + private final long timeToLiveMillis; public GetSuperClusterRoutersProcedure( TopologyService topologyService, Config config ) { this.topologyService = topologyService; - this.config = config; + this.timeToLiveMillis = config.get( CausalClusteringSettings.cluster_routing_ttl ).toMillis(); } @Override @@ -76,8 +76,7 @@ public ProcedureSignature signature() public RawIterator apply( Context ctx, Object[] input, ResourceTracker resourceTracker ) throws ProcedureException { Map> routersPerDb = routeEndpoints(); - long ttl = config.get( CausalClusteringSettings.cluster_routing_ttl ).toMillis(); - MultiClusterRoutingResult result = new MultiClusterRoutingResult( routersPerDb, ttl ); + MultiClusterRoutingResult result = new MultiClusterRoutingResult( routersPerDb, timeToLiveMillis ); return RawIterator.of( MultiClusterRoutingResultFormat.build( result ) ); } diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/MultiClusterRoutingResultFormat.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/MultiClusterRoutingResultFormat.java index 7074af9169b03..8c0dcd439c7aa 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/MultiClusterRoutingResultFormat.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/multi_cluster/procedure/MultiClusterRoutingResultFormat.java @@ -25,20 +25,19 @@ import java.util.TreeMap; import java.util.function.Function; import java.util.stream.Collectors; -import java.util.stream.Stream; import org.neo4j.causalclustering.routing.Endpoint; import org.neo4j.causalclustering.routing.Role; -import org.neo4j.causalclustering.routing.RoutingResult; import org.neo4j.causalclustering.routing.multi_cluster.MultiClusterRoutingResult; -import org.neo4j.causalclustering.routing.procedure.RoutingResultFormat; +import static org.neo4j.causalclustering.routing.procedure.RoutingResultFormatHelper.parseEndpoints; import static java.util.concurrent.TimeUnit.MILLISECONDS; /** - * The result format of Get*ClusterRouting procedures. + * The result format of {@link GetSubClusterRoutersProcedure} and + * {@link GetSuperClusterRoutersProcedure} procedures. */ -public class MultiClusterRoutingResultFormat extends RoutingResultFormat +public class MultiClusterRoutingResultFormat { private static final String DB_NAME_KEY = "database"; diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/ProcedureNamesEnum.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/ProcedureNamesEnum.java index 676ce423b0e78..c2dab5cbedcb6 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/ProcedureNamesEnum.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/ProcedureNamesEnum.java @@ -24,7 +24,6 @@ public interface ProcedureNamesEnum { - String[] procedureNameSpace(); String procedureName(); diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/RoutingResultFormat.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/RoutingResultFormatHelper.java similarity index 92% rename from enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/RoutingResultFormat.java rename to enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/RoutingResultFormatHelper.java index 57e254540b2a5..63e13ec427672 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/RoutingResultFormat.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/routing/procedure/RoutingResultFormatHelper.java @@ -28,10 +28,10 @@ import static java.util.stream.Collectors.toList; -public abstract class RoutingResultFormat +public final class RoutingResultFormatHelper { - protected static List parseEndpoints( Object[] addresses, Role role ) + public static List parseEndpoints( Object[] addresses, Role role ) { return Stream.of( addresses ) .map( rawAddress -> parseAddress( (String) rawAddress ) ) diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/MultiClusterRoutingIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/MultiClusterRoutingIT.java index f5d157134f500..0310a61827da5 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/MultiClusterRoutingIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/MultiClusterRoutingIT.java @@ -19,8 +19,6 @@ */ package org.neo4j.causalclustering.scenarios; -import org.hamcrest.BaseMatcher; -import org.hamcrest.Description; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -152,7 +150,7 @@ public void superCallShouldReturnAllRouters() } @Test - public void subCallShouldRerturnLocalRouters() + public void subCallShouldReturnLocalRouters() { String dbName = getFirstDbName( dbNames ); Stream members = dbNames.stream().map( n -> cluster.getDbWithAnyRole( n, Role.FOLLOWER, Role.LEADER ).database() );