@Override public void createSessionTracker() { sessionTracker = new LearnerSessionTracker( this, getZKDatabase().getSessionWithTimeOuts(), this.tickTime, self.getId(), self.areLocalSessionsEnabled(), getZooKeeperServerListener()); }
@Override public synchronized void shutdown() { if (!canShutdown()) { LOG.debug("ZooKeeper server is not running, so not proceeding to shutdown!"); return; } super.shutdown(); if (syncRequestProcessorEnabled && syncProcessor != null) { syncProcessor.shutdown(); } } }
@Override public int getGlobalOutstandingLimit() { int divisor = self.getQuorumSize() > 2 ? self.getQuorumSize() - 1 : 1; int globalOutstandingLimit = super.getGlobalOutstandingLimit() / divisor; LOG.info("Override {} to {}", GLOBAL_OUTSTANDING_LIMIT, globalOutstandingLimit); return globalOutstandingLimit; }
zk.registerJMX(new ObserverBean(this, zk), self.jmxLocalPeerBean); zk.unregisterJMX(this);
zk.getZKDatabase().deserializeSnapshot(leaderIs); zk.getZKDatabase().initConfigInZKDatabase(self.getQuorumVerifier()); zk.getZKDatabase().setlastProcessedZxid(qp.getZxid()); boolean truncated=zk.getZKDatabase().truncateLog(qp.getZxid()); if (!truncated) { zk.getZKDatabase().setlastProcessedZxid(qp.getZxid()); zk.getZKDatabase().initConfigInZKDatabase(self.getQuorumVerifier()); zk.createSessionTracker(); LOG.warn("Committing " + qp.getZxid() + ", but next proposal is " + pif.hdr.getZxid()); } else { zk.processTxn(pif.hdr, pif.rec); packetsNotCommitted.remove(); zk.processTxn(packet.hdr, packet.rec); } else { packetsNotCommitted.add(packet); zk.takeSnapshot(syncSnapshot); self.setCurrentEpoch(newEpoch); zk.takeSnapshot(syncSnapshot); writePacket(ack, true);
FileTxnSnapLog ftsl = new FileTxnSnapLog(tmpFile, tmpFile); SimpleLearner sl = new SimpleLearner(ftsl); long startZxid = sl.zk.getLastProcessedZxid(); sl.zk.getZKDatabase().serializeSnapshot(oa); oa.writeString("BenWasHere", "signature"); TxnHeader hdr = new TxnHeader(0, 0, 0, 0, ZooDefs.OpCode.create); CreateTxn txn = new CreateTxn("/foo", new byte[0], new ArrayList<ACL>(), false, sl.zk.getZKDatabase().getNode("/").stat.getCversion()); ByteArrayOutputStream tbaos = new ByteArrayOutputStream(); BinaryOutputArchive boa = BinaryOutputArchive.getArchive(tbaos); } catch (EOFException e) {} sl.zk.shutdown(); sl = new SimpleLearner(ftsl); Assert.assertEquals(startZxid, sl.zk.getLastProcessedZxid()); } finally { TestUtils.deleteFileRecursively(tmpFile);
tmpDir.delete(); tmpDir.mkdir(); File logDir = o.zk.getTxnLogFactory().getDataDir().getParentFile(); File snapDir = o.zk.getTxnLogFactory().getSnapDir().getParentFile(); try { Assert.assertEquals(0, o.self.getAcceptedEpoch()); Assert.assertEquals(1, o.self.getCurrentEpoch()); Assert.assertEquals(foo2Zxid, o.zk.getLastProcessedZxid()); .getZKDatabase().getData("/foo2", stat, watcher))); .getZKDatabase().getData("/foo1", stat, null))); Assert.assertEquals("data2", new String(o.zk .getZKDatabase().getData("/foo2", stat, null))); o.zk.shutdown();
@Override protected void registerJMX() { // register with JMX try { jmxDataTreeBean = new DataTreeBean(getZKDatabase().getDataTree()); MBeanRegistry.getInstance().register(jmxDataTreeBean, jmxServerBean); } catch (Exception e) { LOG.warn("Failed to register with JMX", e); jmxDataTreeBean = null; } }
qpMain[followerA].quorumPeer.follower.zk.takeSnapshot(true);
zk.getZKDatabase().clear(); zk.getZKDatabase().deserializeSnapshot(leaderIs); String signature = leaderIs.readString("signature"); if (!signature.equals("BenWasHere")) { boolean truncated=zk.getZKDatabase().truncateLog(qp.getZxid()); if (!truncated) { zk.getZKDatabase().setlastProcessedZxid(newLeaderZxid); zk.startup();
protected void ping(QuorumPacket qp) throws IOException { // Send back the ping with our session data ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); Map<Long, Integer> touchTable = zk.getTouchSnapshot(); for (Entry<Long, Integer> entry : touchTable.entrySet()) { dos.writeLong(entry.getKey()); dos.writeInt(entry.getValue()); } qp.setData(bos.toByteArray()); writePacket(qp, true); }
@Override protected void revalidateSession(ServerCnxn cnxn, long sessionId, int sessionTimeout) throws IOException { getLearner().validateSession(cnxn, sessionId, sessionTimeout); }
zk.unregisterJMX((Learner)this);
zk.getZKDatabase().clear(); zk.getZKDatabase().deserializeSnapshot(leaderIs); String signature = leaderIs.readString("signature"); if (!signature.equals("BenWasHere")) { zk.getZKDatabase().setlastProcessedZxid(qp.getZxid()); } else if (qp.getType() == Leader.TRUNC) { boolean truncated=zk.getZKDatabase().truncateLog(qp.getZxid()); if (!truncated) { zk.getZKDatabase().setlastProcessedZxid(qp.getZxid()); zk.createSessionTracker(); LOG.warn("Committing " + qp.getZxid() + ", but next proposal is " + pif.hdr.getZxid()); } else { zk.processTxn(pif.hdr, pif.rec); packetsNotCommitted.remove(); zk.processTxn(packet.hdr, packet.rec); } else { packetsNotCommitted.add(packet); case Leader.UPTODATE: if (isPreZAB1_0) { zk.takeSnapshot(); self.setCurrentEpoch(newEpoch);
zk.registerJMX(new ObserverBean(this, zk), self.jmxLocalPeerBean); zk.unregisterJMX(this);
@Override protected void registerJMX() { // register with JMX try { jmxDataTreeBean = new DataTreeBean(getZKDatabase().getDataTree()); MBeanRegistry.getInstance().register(jmxDataTreeBean, jmxServerBean); } catch (Exception e) { LOG.warn("Failed to register with JMX", e); jmxDataTreeBean = null; } }
Assert.assertNotNull(zkDb2.getSessionWithTimeOuts().get(4L)); verify(f.zk, never()).takeSnapshot(); } finally { TestUtils.deleteFileRecursively(tmpDir);
protected void ping(QuorumPacket qp) throws IOException { // Send back the ping with our session data ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); HashMap<Long, Integer> touchTable = zk .getTouchSnapshot(); for (Entry<Long, Integer> entry : touchTable.entrySet()) { dos.writeLong(entry.getKey()); dos.writeInt(entry.getValue()); } qp.setData(bos.toByteArray()); writePacket(qp, true); }
@Override protected void revalidateSession(ServerCnxn cnxn, long sessionId, int sessionTimeout) throws IOException { if (upgradeableSessionTracker.isLocalSession(sessionId)) { super.revalidateSession(cnxn, sessionId, sessionTimeout); } else { getLearner().validateSession(cnxn, sessionId, sessionTimeout); } }
om.stop(); zk.unregisterJMX((Learner)this);