public void killServer(RaftPeerId id) { LOG.info("killServer " + id); servers.get(id).close(); }
public void killServer(RaftPeerId id) { LOG.info("killServer " + id); servers.get(id).close(); }
public PeerChanges addNewPeers(String[] ids, boolean startNewPeer) { LOG.info("Add new peers {}", Arrays.asList(ids)); // create and add new RaftServers final Collection<RaftServerProxy> newServers = putNewServers( CollectionUtils.as(Arrays.asList(ids), RaftPeerId::valueOf), true); newServers.forEach(s -> startServer(s, true)); if (!startNewPeer) { // start and then close, in order to bind the port newServers.forEach(p -> p.close()); } final Collection<RaftPeer> newPeers = toRaftPeers(newServers); final RaftPeer[] np = newPeers.toArray(new RaftPeer[newPeers.size()]); newPeers.addAll(group.getPeers()); RaftPeer[] p = newPeers.toArray(new RaftPeer[newPeers.size()]); group = new RaftGroup(group.getGroupId(), p); return new PeerChanges(p, np, new RaftPeer[0]); }
public PeerChanges addNewPeers(String[] ids, boolean startNewPeer) throws IOException { LOG.info("Add new peers {}", Arrays.asList(ids)); // create and add new RaftServers final Collection<RaftServerProxy> newServers = putNewServers( CollectionUtils.as(Arrays.asList(ids), RaftPeerId::valueOf), true); startServers(newServers); if (!startNewPeer) { // start and then close, in order to bind the port newServers.forEach(p -> p.close()); } final Collection<RaftPeer> newPeers = toRaftPeers(newServers); final RaftPeer[] np = newPeers.toArray(new RaftPeer[newPeers.size()]); newPeers.addAll(group.getPeers()); RaftPeer[] p = newPeers.toArray(new RaftPeer[newPeers.size()]); group = RaftGroup.valueOf(group.getGroupId(), p); return new PeerChanges(p, np, new RaftPeer[0]); }
static void assertCorruptedLogHeader(RaftPeerId id, File openLogFile, int partialLength, MiniRaftCluster cluster, Logger LOG) throws Exception { Preconditions.assertTrue(partialLength < SegmentedRaftLogFormat.getHeaderLength()); try(final RandomAccessFile raf = new RandomAccessFile(openLogFile, "rw")) { SegmentedRaftLogFormat.applyHeaderTo(header -> { LOG.info("header = {}", StringUtils.bytes2HexString(header)); final byte[] corrupted = new byte[header.length]; System.arraycopy(header, 0, corrupted, 0, partialLength); LOG.info("corrupted = {}", StringUtils.bytes2HexString(corrupted)); raf.write(corrupted); return null; }); } final RaftServerImpl server = cluster.restartServer(id, false); server.getProxy().close(); }
static void assertTruncatedLog(RaftPeerId id, File openLogFile, long lastIndex, MiniRaftCluster cluster) throws Exception { // truncate log FileUtils.truncateFile(openLogFile, openLogFile.length() - 1); final RaftServerImpl server = cluster.restartServer(id, false); // the last index should be one less than before Assert.assertEquals(lastIndex - 1, server.getState().getLog().getLastEntryTermIndex().getIndex()); server.getProxy().close(); }
LOG.info("{} received shutdown response when requesting votes.", server.getId()); server.getProxy().close(); return; case REJECTED:
LOG.info("{} received shutdown response when requesting votes.", server.getId()); server.getProxy().close(); return; case REJECTED: