public static <T> List<T> createProxyAndLocalList( MetricRegistry metrics, T localObject, Set<String> remoteUris, Optional<TrustContext> trustContext, Class<T> clazz, String userAgent) { return ImmutableList.copyOf(Iterables.concat( AtlasDbHttpClients.createProxies(metrics, trustContext, remoteUris, true, clazz, userAgent), ImmutableList.of(localObject))); }
public static LocalPaxosServices createAndRegisterLocalServices( MetricsManager metricsManager, Consumer<Object> env, LeaderConfig config, Supplier<LeaderRuntimeConfig> runtime, String userAgent) { LocalPaxosServices localPaxosServices = createInstrumentedLocalServices( metricsManager, config, runtime, userAgent); env.accept(localPaxosServices.ourAcceptor()); env.accept(localPaxosServices.ourLearner()); env.accept(localPaxosServices.pingableLeader()); env.accept(new NotCurrentLeaderExceptionMapper()); return localPaxosServices; }
/** * Creates a LeaderElectionService using the supplied configuration and registers appropriate endpoints for that * service. */ public static LeaderElectionService create(MetricsManager metricsManager, Consumer<Object> env, LeaderConfig config, Supplier<LeaderRuntimeConfig> runtime) { return create(metricsManager, env, config, runtime, UserAgents.DEFAULT_USER_AGENT); }
ServiceCreator.createTrustContext(config.sslConfiguration()); List<PaxosLearner> learners = createProxyAndLocalList( metricsManager.getRegistry(), ourLearner, remotePaxosServerSpec.remoteLearnerUris(), trustContext, PaxosLearner.class, userAgent); List<PaxosAcceptor> acceptors = createProxyAndLocalList( metricsManager.getRegistry(), ourAcceptor, userAgent); Map<PingableLeader, HostAndPort> otherLeaders = generatePingables( metricsManager, remotePaxosServerSpec.remoteLeaderUris(), trustContext, userAgent);
public static LeaderElectionService create(MetricsManager metricsManager, Consumer<Object> env, LeaderConfig config, Supplier<LeaderRuntimeConfig> runtime, String userAgent) { return createAndRegisterLocalServices(metricsManager, env, config, runtime, userAgent).leaderElectionService(); }
ServiceCreator.createTrustContext(config.sslConfiguration()); List<PaxosLearner> learners = createProxyAndLocalList( metricsManager.getRegistry(), ourLearner, remotePaxosServerSpec.remoteLearnerUris(), trustContext, PaxosLearner.class, userAgent); List<PaxosAcceptor> acceptors = createProxyAndLocalList( metricsManager.getRegistry(), ourAcceptor, userAgent); Map<PingableLeader, HostAndPort> otherLeaders = generatePingables( metricsManager, remotePaxosServerSpec.remoteLeaderUris(), trustContext, userAgent);
LocalPaxosServices localPaxosServices = Leaders.createAndRegisterLocalServices( metricsManager, env,
@Test(expected = IllegalStateException.class) public void createProxyAndLocalListThrowsIfCreatingObjectsWithoutHttpMethodAnnotatedMethods() { BigInteger localBigInteger = new BigInteger("0"); Leaders.createProxyAndLocalList( new MetricRegistry(), localBigInteger, REMOTE_SERVICE_ADDRESSES, Optional.empty(), BigInteger.class); }
public static LocalPaxosServices createInstrumentedLocalServices(MetricsManager metricsManager, LeaderConfig config, Supplier<LeaderRuntimeConfig> runtime, String userAgent) { Set<String> remoteLeaderUris = Sets.newHashSet(config.leaders()); remoteLeaderUris.remove(config.localServer()); RemotePaxosServerSpec remotePaxosServerSpec = ImmutableRemotePaxosServerSpec.builder() .remoteLeaderUris(remoteLeaderUris) .remoteAcceptorUris(remoteLeaderUris) .remoteLearnerUris(remoteLeaderUris) .build(); return createInstrumentedLocalServices(metricsManager, config, runtime, remotePaxosServerSpec, userAgent); }
public static LeaderElectionService create(MetricsManager metricsManager, Consumer<Object> env, LeaderConfig config, Supplier<LeaderRuntimeConfig> runtime, String userAgent) { return createAndRegisterLocalServices(metricsManager, env, config, runtime, userAgent).leaderElectionService(); }
/** * Creates a LeaderElectionService using the supplied configuration and registers appropriate endpoints for that * service. */ public static LeaderElectionService create(MetricsManager metricsManager, Consumer<Object> env, LeaderConfig config, Supplier<LeaderRuntimeConfig> runtime) { return create(metricsManager, env, config, runtime, UserAgents.DEFAULT_USER_AGENT); }
@Test(expected = NullPointerException.class) public void createProxyAndLocalListThrowsIfNullClassProvided() { PaxosAcceptor localAcceptor = mock(PaxosAcceptor.class); Leaders.createProxyAndLocalList( new MetricRegistry(), localAcceptor, REMOTE_SERVICE_ADDRESSES, Optional.empty(), null); } }
public void registerLeaderElectionService() { Set<String> remoteServers = PaxosRemotingUtils.getRemoteServerPaths(install); LeaderConfig leaderConfig = getLeaderConfig(); Set<String> paxosSubresourceUris = PaxosTimeLockUriUtils.getLeaderPaxosUris(remoteServers); Leaders.LocalPaxosServices localPaxosServices = Leaders.createInstrumentedLocalServices( metricsManager, leaderConfig, Suppliers.compose(getLeaderRuntimeConfig::apply, runtime::get), ImmutableRemotePaxosServerSpec.builder() .remoteLeaderUris(remoteServers) .remoteAcceptorUris(paxosSubresourceUris) .remoteLearnerUris(paxosSubresourceUris) .build(), "leader-election-service"); localPingableLeader = localPaxosServices.pingableLeader(); leaderElectionService = localPaxosServices.leaderElectionService(); leadershipObserver = localPaxosServices.leadershipObserver(); registrar.accept(localPingableLeader); registrar.accept(new LeadershipResource( localPaxosServices.ourAcceptor(), localPaxosServices.ourLearner())); }
LocalPaxosServices localPaxosServices = Leaders.createAndRegisterLocalServices( metricsManager, env,
List<PaxosAcceptor> acceptors = Leaders.createProxyAndLocalList( metricRegistry, paxosResource.getPaxosAcceptor(client), List<PaxosLearner> learners = Leaders.createProxyAndLocalList( metricRegistry, ourLearner,
public static LocalPaxosServices createAndRegisterLocalServices( MetricsManager metricsManager, Consumer<Object> env, LeaderConfig config, Supplier<LeaderRuntimeConfig> runtime, String userAgent) { LocalPaxosServices localPaxosServices = createInstrumentedLocalServices( metricsManager, config, runtime, userAgent); env.accept(localPaxosServices.ourAcceptor()); env.accept(localPaxosServices.ourLearner()); env.accept(localPaxosServices.pingableLeader()); env.accept(new NotCurrentLeaderExceptionMapper()); return localPaxosServices; }
@Test public void canCreateProxyAndLocalListOfPaxosAcceptors() { PaxosAcceptor localAcceptor = mock(PaxosAcceptor.class); when(localAcceptor.getLatestSequencePreparedOrAccepted()).thenReturn(1L); List<PaxosAcceptor> paxosAcceptors = Leaders.createProxyAndLocalList( new MetricRegistry(), localAcceptor, REMOTE_SERVICE_ADDRESSES, Optional.empty(), PaxosAcceptor.class); MatcherAssert.assertThat(paxosAcceptors.size(), is(REMOTE_SERVICE_ADDRESSES.size() + 1)); paxosAcceptors.forEach(object -> MatcherAssert.assertThat(object, not(nullValue()))); MatcherAssert.assertThat(Iterables.getLast(paxosAcceptors).getLatestSequencePreparedOrAccepted(), is(1L)); verify(localAcceptor).getLatestSequencePreparedOrAccepted(); verifyNoMoreInteractions(localAcceptor); }
public static LocalPaxosServices createInstrumentedLocalServices(MetricsManager metricsManager, LeaderConfig config, Supplier<LeaderRuntimeConfig> runtime, String userAgent) { Set<String> remoteLeaderUris = Sets.newHashSet(config.leaders()); remoteLeaderUris.remove(config.localServer()); RemotePaxosServerSpec remotePaxosServerSpec = ImmutableRemotePaxosServerSpec.builder() .remoteLeaderUris(remoteLeaderUris) .remoteAcceptorUris(remoteLeaderUris) .remoteLearnerUris(remoteLeaderUris) .build(); return createInstrumentedLocalServices(metricsManager, config, runtime, remotePaxosServerSpec, userAgent); }
@Test public void createProxyAndLocalListCreatesSingletonListIfNoRemoteAddressesProvided() { PaxosAcceptor localAcceptor = mock(PaxosAcceptor.class); when(localAcceptor.getLatestSequencePreparedOrAccepted()).thenReturn(1L); List<PaxosAcceptor> paxosAcceptors = Leaders.createProxyAndLocalList( new MetricRegistry(), localAcceptor, ImmutableSet.of(), Optional.empty(), PaxosAcceptor.class); MatcherAssert.assertThat(paxosAcceptors.size(), is(1)); MatcherAssert.assertThat(Iterables.getLast(paxosAcceptors).getLatestSequencePreparedOrAccepted(), is(1L)); verify(localAcceptor).getLatestSequencePreparedOrAccepted(); verifyNoMoreInteractions(localAcceptor); }
@Test public void canCreateProxyAndLocalListOfPaxosLearners() { PaxosLearner localLearner = mock(PaxosLearner.class); PaxosValue value = mock(PaxosValue.class); when(localLearner.getGreatestLearnedValue()).thenReturn(value); List<PaxosLearner> paxosLearners = Leaders.createProxyAndLocalList( new MetricRegistry(), localLearner, REMOTE_SERVICE_ADDRESSES, Optional.empty(), PaxosLearner.class); MatcherAssert.assertThat(paxosLearners.size(), is(REMOTE_SERVICE_ADDRESSES.size() + 1)); paxosLearners.forEach(object -> MatcherAssert.assertThat(object, not(nullValue()))); MatcherAssert.assertThat(Iterables.getLast(paxosLearners).getGreatestLearnedValue(), is(value)); verify(localLearner).getGreatestLearnedValue(); verifyNoMoreInteractions(localLearner); }