use of org.apache.zookeeper.server.quorum.Leader in project zookeeper by apache.
the class StatCommand method commandRun.
@Override
public void commandRun() {
if (!isZKServerRunning()) {
pw.println(ZK_NOT_SERVING);
} else {
pw.print("Zookeeper version: ");
pw.println(Version.getFullVersion());
if (zkServer instanceof ReadOnlyZooKeeperServer) {
pw.println("READ-ONLY mode; serving only read-only clients");
}
if (len == FourLetterCommands.statCmd) {
LOG.info("Stat command output");
pw.println("Clients:");
for (ServerCnxn c : factory.getConnections()) {
c.dumpConnectionInfo(pw, true);
pw.println();
}
pw.println();
}
ServerStats serverStats = zkServer.serverStats();
pw.print(serverStats.toString());
pw.print("Node count: ");
pw.println(zkServer.getZKDatabase().getNodeCount());
if (serverStats.getServerState().equals("leader")) {
Leader leader = ((LeaderZooKeeperServer) zkServer).getLeader();
BufferStats proposalStats = leader.getProposalStats();
pw.printf("Proposal sizes last/min/max: %s%n", proposalStats.toString());
}
}
}
use of org.apache.zookeeper.server.quorum.Leader in project zookeeper by apache.
the class PrepRequestProcessorTest method testReconfigWithAnotherOutstandingChange.
@Test
public void testReconfigWithAnotherOutstandingChange() throws Exception {
QuorumPeerConfig.setReconfigEnabled(true);
QuorumPeerConfig.setStandaloneEnabled(false);
QuorumPeer qp = new QuorumPeer();
QuorumVerifier quorumVerifierMock = mock(QuorumVerifier.class);
when(quorumVerifierMock.getAllMembers()).thenReturn(LeaderBeanTest.getMockedPeerViews(qp.getId()));
qp.setQuorumVerifier(quorumVerifierMock, false);
FileTxnSnapLog snapLog = new FileTxnSnapLog(tmpDir, tmpDir);
LeaderZooKeeperServer lzks = new LeaderZooKeeperServer(snapLog, qp, new ZKDatabase(snapLog));
qp.leader = new Leader(qp, lzks);
lzks.sessionTracker = new MySessionTracker();
ZooKeeperServer.setDigestEnabled(true);
processor = new PrepRequestProcessor(lzks, new MyRequestProcessor());
Record record = new CreateRequest("/foo", "data".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT.toFlag());
pLatch = new CountDownLatch(1);
processor.pRequest(createRequest(record, OpCode.create, false));
assertTrue(pLatch.await(5, TimeUnit.SECONDS), "request hasn't been processed in chain");
String newMember = "server.0=localhost:" + PortAssignment.unique() + ":" + PortAssignment.unique() + ":participant";
record = new ReconfigRequest(null, null, newMember, 0);
pLatch = new CountDownLatch(1);
processor.pRequest(createRequest(record, OpCode.reconfig, true));
assertTrue(pLatch.await(5, TimeUnit.SECONDS), "request hasn't been processed in chain");
// Verifies that there was no error.
assertEquals(outcome.getHdr().getType(), OpCode.reconfig);
}
use of org.apache.zookeeper.server.quorum.Leader in project zookeeper by apache.
the class QuorumOracleMajTest method dropConnectionTest.
private void dropConnectionTest(QuorumPeer s, int leader) {
Leader.Proposal p = new Leader.Proposal();
p.addQuorumVerifier(s.getQuorumVerifier());
ArrayList<LearnerHandler> fake = new ArrayList<>();
LearnerHandler f = null;
fake.add(f);
s.getQuorumVerifier().updateNeedOracle(fake);
// still have valid followers, the oracle should not take place
assertEquals(false, s.getQuorumVerifier().getNeedOracle());
fake.remove(0);
s.getQuorumVerifier().updateNeedOracle(fake);
// lose all of followers, the oracle should take place
assertEquals(true, s.getQuorumVerifier().getNeedOracle());
// when leader is 1, we expect false.
// when leader is 2, we expect true.
assertEquals(leader != 1, p.hasAllQuorums());
}
Aggregations