/** * Returns the member with the specified id. * * @return null if the member id is not known. */ public Member getMember(int id) { for (Member m : members) { if (m.getMemberId() == id) { return m; } } return null; }
/** * Returns the member with the specified id. * * @return null if the member id is not known. */ public Member getMember(int id) { for (Member m : members) { if (m.getMemberId() == id) { return m; } } return null; }
/** * Returns the commit index for this cluster. */ public boolean isLeader() { return getMemberId() == cmember.getLeaderId(); }
/** * Returns whether this member is a leader. * * @return true if this member is a leader. */ public boolean isLeader() { return getMemberId() == cmember.getLeaderId(); }
public InetSocketAddress getAddress() { return gondola.getConfig().getAddressForMember(getMemberId()); } }
public RoutingService(Gondola gondola, String shardId) { this.gondola = gondola; shard = gondola.getShard(shardId); hostId = gondola.getHostId(); this.shardId = shardId; memberId = shard.getLocalMember().getMemberId(); commitTimer = GondolaApplication.MyMetricsServletContextListener.METRIC_REGISTRY.timer("LogWriter"); }
public InetSocketAddress getAddress() { return gondola.getConfig().getAddressForMember(getMemberId()); }
public ChangeLogProcessorThread(String shardId) { setName("ChangeLogProcessor"); this.shardId = shardId; this.hostId = gondola.getHostId(); this.memberId = gondola.getShard(shardId).getLocalMember().getMemberId(); this.changeLogConsumer = services.get(shardId).provideChangeLogConsumer(); }
try { logger .info("[{}] New leader {} elected.", gondola.getHostId(), roleChangeEvent.leader.getMemberId()); leaderFoundCondition.signalAll(); } finally { String appUri = Utils.getAppUri(config, config.getMember(roleChangeEvent.leader.getMemberId()).getHostId()); updateShardRoutingEntries(roleChangeEvent.shard.getShardId(), appUri); if (roleChangeEvent.leader.isLocal()) { String shardId = roleChangeEvent.shard.getShardId(); trace("[{}-{}] Become leader on \"{}\", blocking all requests to the shard....", gondola.getHostId(), roleChangeEvent.leader.getMemberId(), shardId); lockManager.blockRequestOnShard(shardId); trace("[{}-{}] Wait until raft logs applied to storage...", gondola.getHostId(), roleChangeEvent.leader.getMemberId()); waitDrainRaftLogs(shardId); trace("[{}-{}] Raft logs are up-to-date, notify application is ready to serve...", gondola.getHostId(), roleChangeEvent.leader.getMemberId()); services.get(roleChangeEvent.shard.getShardId()).ready(); trace("[{}-{}] Ready for serving, unblocking the requests...", gondola.getHostId(), roleChangeEvent.leader.getMemberId()); long count = lockManager.unblockRequestOnShard(shardId); trace("[{}-{}] System is back to serving, unblocked {} requests ...", gondola.getHostId(), roleChangeEvent.leader.getMemberId(), count); }, singleThreadExecutor).exceptionally(throwable -> { logger.info("[{}-{}] Errors while executing leader change event. message={}",
/** * Starts observer mode to remote shard. */ @Override public void startObserving(String shardId, String observedShardId, long timeoutMs) throws ShardManagerException, InterruptedException { boolean success = false; trace("[{}-{}] Try to follow shardId={} as slave...", gondola.getHostId(), gondola.getShard(shardId).getLocalMember().getMemberId(), observedShardId); List<Config.ConfigMember> membersInShard = config.getMembersInShard(observedShardId); for (Config.ConfigMember m : membersInShard) { if (success = setSlave(shardId, m.getMemberId(), timeoutMs / membersInShard.size())) { filter.getChangeLogProcessor().reset(shardId); trace("[{}-{}] Successfully to follow masterId={}", gondola.getHostId(), gondola.getShard(shardId).getLocalMember().getMemberId(), m.getMemberId()); break; } } if (!success) { logger.error("[{}-{}] Failed follow master={}", gondola.getHostId(), gondola.getShard(shardId).getLocalMember().getMemberId(), observedShardId); throw new ShardManagerException(FAILED_START_SLAVE); } observedShards.add(observedShardId); }
LogEntry le = gondola.getStorage().getLastLogEntry(cluster.getLocalMember().getMemberId()); int savedIndex = 0; if (le != null) { case "q": le = gondola.getStorage().getLastLogEntry(cluster.getLocalMember().getMemberId()); if (le != null) { logger.info("lastTerm={}, lastIndex={}", le.term, le.index);