private LeaderConfig getLeaderConfig() { // TODO (jkong): Live Reload Paxos Ping Rates PaxosRuntimeConfiguration paxosRuntimeConfiguration = runtime.get(); return ImmutableLeaderConfig.builder() .sslConfiguration(PaxosRemotingUtils.getSslConfigurationOptional(install)) .leaders(PaxosRemotingUtils.addProtocols(install, PaxosRemotingUtils.getClusterAddresses(install))) .localServer(PaxosRemotingUtils.addProtocol(install, PaxosRemotingUtils.getClusterConfiguration(install).localServer())) .acceptorLogDir(Paths.get(install.paxos().dataDirectory().toString(), PaxosTimeLockConstants.LEADER_PAXOS_NAMESPACE, PaxosTimeLockConstants.ACCEPTOR_SUBDIRECTORY_PATH).toFile()) .learnerLogDir(Paths.get(install.paxos().dataDirectory().toString(), PaxosTimeLockConstants.LEADER_PAXOS_NAMESPACE, PaxosTimeLockConstants.LEARNER_SUBDIRECTORY_PATH).toFile()) .pingRateMs(paxosRuntimeConfiguration.pingRateMs()) .quorumSize(PaxosRemotingUtils.getQuorumSize(PaxosRemotingUtils.getClusterAddresses(install))) .leaderPingResponseWaitMs(paxosRuntimeConfiguration.pingRateMs()) .randomWaitBeforeProposingLeadershipMs(paxosRuntimeConfiguration.pingRateMs()) .build(); }
private TimeLockAgent(MetricsManager metricsManager, TimeLockInstallConfiguration install, Supplier<TimeLockRuntimeConfiguration> runtime, TimeLockDeprecatedConfiguration deprecated, Consumer<Object> registrar) { this.metricsManager = metricsManager; this.install = install; this.runtime = runtime; this.registrar = registrar; this.paxosResource = PaxosResource.create(metricsManager.getRegistry(), install.paxos().dataDirectory().toString()); this.leadershipCreator = new PaxosLeadershipCreator(this.metricsManager, install, runtime, registrar); this.lockCreator = new LockCreator(runtime, deprecated); this.timestampCreator = getTimestampCreator(metricsManager.getRegistry()); LockLog lockLog = new LockLog(metricsManager.getRegistry(), Suppliers.compose(TimeLockRuntimeConfiguration::slowLockLogTriggerMillis, runtime::get)); this.timelockCreator = new AsyncTimeLockServicesCreator(metricsManager, lockLog, leadershipCreator); }