protected void initializeAndRun(String[] args) throws ConfigException, IOException, AdminServerException { QuorumPeerConfig config = new QuorumPeerConfig(); if (args.length == 1) { config.parse(args[0]); } // Start and schedule the the purge task DatadirCleanupManager purgeMgr = new DatadirCleanupManager(config .getDataDir(), config.getDataLogDir(), config .getSnapRetainCount(), config.getPurgeInterval()); purgeMgr.start(); if (args.length == 1 && config.isDistributed()) { runFromConfig(config); } else { LOG.warn("Either no config or no quorum defined in config, running " + " in standalone mode"); // there is only server in the quorum -- run as standalone ZooKeeperServerMain.main(args); } }
@Test public void testPurgeTask() throws Exception { purgeMgr = new DatadirCleanupManager(snapDir, dataLogDir, 3, 1); purgeMgr.start(); Assert.assertEquals("Data log directory is not set as configured", dataLogDir, purgeMgr.getDataLogDir()); Assert.assertEquals("Snapshot directory is not set as configured", snapDir, purgeMgr.getSnapDir()); Assert.assertEquals("Snapshot retain count is not set as configured", 3, purgeMgr.getSnapRetainCount()); Assert.assertEquals("Purge task is not started", STARTED, purgeMgr.getPurgeTaskStatus()); purgeMgr.shutdown(); Assert.assertEquals("Purge task is still running after shutdown", COMPLETED, purgeMgr.getPurgeTaskStatus()); }
@Test public void testWithNegativePurgeInterval() throws Exception { purgeMgr = new DatadirCleanupManager(snapDir, dataLogDir, 3, -1); purgeMgr.start(); Assert.assertEquals("Purge task is scheduled with negative purge interval", NOT_STARTED, purgeMgr.getPurgeTaskStatus()); purgeMgr.shutdown(); Assert.assertEquals("Purge task is scheduled with negative purge interval", NOT_STARTED, purgeMgr.getPurgeTaskStatus()); }
@After public void tearDown() throws Exception { if (purgeMgr != null) { purgeMgr.shutdown(); } } }
private void purgeTxnLogs() { logger.info("Purging old ZooKeeper snapshots and logs .."); try { PurgeTxnLog.purge(purgeManager.getDataLogDir(), purgeManager.getSnapDir(), purgeManager.getSnapRetainCount()); logger.info("Purged old ZooKeeper snapshots and logs."); } catch (IOException e) { logger.error("Failed to purge old ZooKeeper snapshots and logs:", e); } } }
@Override public synchronized void start() { purgeTxnLogs(); purgeManager.start(); super.start(); }
EmbeddedZooKeeper(QuorumPeerConfig zkCfg) throws IOException { cnxnFactory = createCnxnFactory(zkCfg); setTxnFactory(new FileTxnSnapLog(zkCfg.getDataLogDir(), zkCfg.getDataDir())); enableLocalSessions(zkCfg.areLocalSessionsEnabled()); enableLocalSessionsUpgrading(zkCfg.isLocalSessionsUpgradingEnabled()); setElectionType(zkCfg.getElectionAlg()); setMyid(zkCfg.getServerId()); setTickTime(zkCfg.getTickTime()); setMinSessionTimeout(zkCfg.getMinSessionTimeout()); setMaxSessionTimeout(zkCfg.getMaxSessionTimeout()); setInitLimit(zkCfg.getInitLimit()); setSyncLimit(zkCfg.getSyncLimit()); setConfigFileName(zkCfg.getConfigFilename()); setZKDatabase(new ZKDatabase(getTxnFactory())); setQuorumVerifier(zkCfg.getQuorumVerifier(), false); if (zkCfg.getLastSeenQuorumVerifier() != null) { setLastSeenQuorumVerifier(zkCfg.getLastSeenQuorumVerifier(), false); } initConfigInZKDatabase(); setCnxnFactory(cnxnFactory); setLearnerType(zkCfg.getPeerType()); setSyncEnabled(zkCfg.getSyncEnabled()); setQuorumListenOnAllIPs(zkCfg.getQuorumListenOnAllIPs()); configureSasl(); purgeManager = new DatadirCleanupManager(zkCfg.getDataDir(), zkCfg.getDataLogDir(), zkCfg.getSnapRetainCount(), zkCfg.getPurgeInterval()); }
@Test public void testWithZeroPurgeInterval() throws Exception { purgeMgr = new DatadirCleanupManager(snapDir, dataLogDir, 3, 0); purgeMgr.start(); Assert.assertEquals("Purge task is scheduled with zero purge interval", NOT_STARTED, purgeMgr.getPurgeTaskStatus()); purgeMgr.shutdown(); Assert.assertEquals("Purge task is scheduled with zero purge interval", NOT_STARTED, purgeMgr.getPurgeTaskStatus()); }
@Override public synchronized void shutdown() { if (started) { started = false; if (transactionLog != null) { try { transactionLog.close(); } catch (final IOException ioe) { logger.warn("Failed to close Transaction Log", ioe); } } if (connectionFactory != null) { connectionFactory.shutdown(); } if (quorumPeer != null && quorumPeer.isRunning()) { quorumPeer.shutdown(); } if (embeddedZkServer != null && embeddedZkServer.isRunning()) { embeddedZkServer.shutdown(); } if (datadirCleanupManager != null) { datadirCleanupManager.shutdown(); } } }
private void purgeTxnLogs() { logger.info("Purging old ZooKeeper snapshots and logs .."); try { PurgeTxnLog.purge(purgeManager.getDataLogDir(), purgeManager.getSnapDir(), purgeManager.getSnapRetainCount()); logger.info("Purged old ZooKeeper snapshots and logs."); } catch (IOException e) { logger.error("Failed to purge old ZooKeeper snapshots and logs:", e); } } }
@Override public synchronized void start() { purgeTxnLogs(); purgeManager.start(); super.start(); }
EmbeddedZooKeeper(QuorumPeerConfig zkCfg) throws IOException { cnxnFactory = createCnxnFactory(zkCfg); setTxnFactory(new FileTxnSnapLog(zkCfg.getDataLogDir(), zkCfg.getDataDir())); enableLocalSessions(zkCfg.areLocalSessionsEnabled()); enableLocalSessionsUpgrading(zkCfg.isLocalSessionsUpgradingEnabled()); setElectionType(zkCfg.getElectionAlg()); setMyid(zkCfg.getServerId()); setTickTime(zkCfg.getTickTime()); setMinSessionTimeout(zkCfg.getMinSessionTimeout()); setMaxSessionTimeout(zkCfg.getMaxSessionTimeout()); setInitLimit(zkCfg.getInitLimit()); setSyncLimit(zkCfg.getSyncLimit()); setConfigFileName(zkCfg.getConfigFilename()); setZKDatabase(new ZKDatabase(getTxnFactory())); setQuorumVerifier(zkCfg.getQuorumVerifier(), false); if (zkCfg.getLastSeenQuorumVerifier() != null) { setLastSeenQuorumVerifier(zkCfg.getLastSeenQuorumVerifier(), false); } initConfigInZKDatabase(); setCnxnFactory(cnxnFactory); setLearnerType(zkCfg.getPeerType()); setSyncEnabled(zkCfg.getSyncEnabled()); setQuorumListenOnAllIPs(zkCfg.getQuorumListenOnAllIPs()); configureSasl(); purgeManager = new DatadirCleanupManager(zkCfg.getDataDir(), zkCfg.getDataLogDir(), zkCfg.getSnapRetainCount(), zkCfg.getPurgeInterval()); }
protected void initializeAndRun(String[] args) throws ConfigException, IOException { QuorumPeerConfig config = new QuorumPeerConfig(); if (args.length == 1) { config.parse(args[0]); } // Start and schedule the the purge task DatadirCleanupManager purgeMgr = new DatadirCleanupManager(config .getDataDir(), config.getDataLogDir(), config .getSnapRetainCount(), config.getPurgeInterval()); purgeMgr.start(); if (args.length == 1 && config.servers.size() > 0) { runFromConfig(config); } else { LOG.warn("Either no config or no quorum defined in config, running " + " in standalone mode"); // there is only server in the quorum -- run as standalone ZooKeeperServerMain.main(args); } }
purgeManager.shutdown(); purgeManager = null;
private void purgeTxnLogs() { logger.info("Purging old ZooKeeper snapshots and logs .."); try { PurgeTxnLog.purge(purgeManager.getDataLogDir(), purgeManager.getSnapDir(), purgeManager.getSnapRetainCount()); logger.info("Purged old ZooKeeper snapshots and logs."); } catch (IOException e) { logger.error("Failed to purge old ZooKeeper snapshots and logs:", e); } } }
@Override public synchronized void start() { purgeTxnLogs(); purgeManager.start(); super.start(); }
EmbeddedZooKeeper(QuorumPeerConfig zkCfg) throws IOException { cnxnFactory = createCnxnFactory(zkCfg); setTxnFactory(new FileTxnSnapLog(zkCfg.getDataLogDir(), zkCfg.getDataDir())); enableLocalSessions(zkCfg.areLocalSessionsEnabled()); enableLocalSessionsUpgrading(zkCfg.isLocalSessionsUpgradingEnabled()); setElectionType(zkCfg.getElectionAlg()); setMyid(zkCfg.getServerId()); setTickTime(zkCfg.getTickTime()); setMinSessionTimeout(zkCfg.getMinSessionTimeout()); setMaxSessionTimeout(zkCfg.getMaxSessionTimeout()); setInitLimit(zkCfg.getInitLimit()); setSyncLimit(zkCfg.getSyncLimit()); setConfigFileName(zkCfg.getConfigFilename()); setZKDatabase(new ZKDatabase(getTxnFactory())); setQuorumVerifier(zkCfg.getQuorumVerifier(), false); if (zkCfg.getLastSeenQuorumVerifier() != null) { setLastSeenQuorumVerifier(zkCfg.getLastSeenQuorumVerifier(), false); } initConfigInZKDatabase(); setCnxnFactory(cnxnFactory); setLearnerType(zkCfg.getPeerType()); setSyncEnabled(zkCfg.getSyncEnabled()); setQuorumListenOnAllIPs(zkCfg.getQuorumListenOnAllIPs()); configureSasl(); purgeManager = new DatadirCleanupManager(zkCfg.getDataDir(), zkCfg.getDataLogDir(), zkCfg.getSnapRetainCount(), zkCfg.getPurgeInterval()); }
public synchronized void start() throws IOException { if (started) { return; } if (quorumPeerConfig.getPurgeInterval() > 0) { datadirCleanupManager = new DatadirCleanupManager(quorumPeerConfig .getDataDir(), quorumPeerConfig.getDataLogDir(), quorumPeerConfig .getSnapRetainCount(), quorumPeerConfig.getPurgeInterval()); datadirCleanupManager.start(); } if (quorumPeerConfig.isDistributed()) { startDistributed(); } else { startStandalone(); } started = true; }
@Override public void shutdown() { // Close the network stack first so that the shutdown process is done quickly. cnxnFactory.shutdown(); purgeManager.shutdown(); super.shutdown(); }
new DatadirCleanupManager(quorumConfig.getDataDir(), quorumConfig.getDataLogDir(), quorumConfig.getSnapRetainCount(), quorumConfig.getPurgeInterval()); purgeManager.start();