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); } }
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); } }
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; }
@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()); }
@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()); }
quorumConfig.getSnapRetainCount(), quorumConfig.getPurgeInterval()); purgeManager.start();
@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()); }
private void startCleanupManager(String dataDir, String dataLogDir, Properties props) { int snapRetainCount = CreateEnsembleOptions.DEFAULT_SNAP_RETAIN_COUNT; Object snapRetainCountObj = props.get("snapRetainCount"); if (snapRetainCountObj != null) { snapRetainCount = Integer.valueOf((String) props.get("snapRetainCount")); } int purgeInterval = CreateEnsembleOptions.DEFAULT_PURGE_INTERVAL_IN_HOURS; Object purgeIntervalObj = props.get("purgeInterval"); if (purgeIntervalObj != null) { purgeInterval = Integer.valueOf((String) props.get("purgeInterval")); } LOGGER.info("Starting Zookeeper Cleanup Manager with params: snapRetainCount={}, purgeInterval={}, dataDir={}, dataLogDir={}", snapRetainCount, purgeInterval, dataDir, dataLogDir); cleanupManager = new DatadirCleanupManager(dataDir, dataLogDir, snapRetainCount, purgeInterval); cleanupManager.start(); }
@Override public synchronized void start() { purgeTxnLogs(); purgeManager.start(); super.start(); }
@Override public synchronized void start() { purgeTxnLogs(); purgeManager.start(); super.start(); }
@Override public synchronized void start() { purgeTxnLogs(); purgeManager.start(); super.start(); }
quorumConfig.getSnapRetainCount(), quorumConfig.getPurgeInterval()); purgeManager.start();
quorumConfig.getSnapRetainCount(), quorumConfig.getPurgeInterval()); purgeManager.start();
/** * Starts quorum and/or zookeeper service. * @param config quorum and zookeeper configuration * @return zookeeper port * @throws IOException if can't start zookeeper */ public int start(ZookeeperConfig config) throws IOException { serverRunner = new ZooKeeperServerRunner(); //Make sure zookeeper starts first and purge manager last //This is important because zookeeper creates a folder //strucutre on the local disk. Purge manager also tries //to create it but from a different thread and can run into //race condition. See FileTxnSnapLog source code for details. int port = serverRunner.start(config); // Start and schedule the the purge task DatadirCleanupManager purgeMgr = new DatadirCleanupManager( config .getDataDir(), config.getDataLogDir(), GiraphConstants.ZOOKEEPER_SNAP_RETAIN_COUNT, GiraphConstants.ZOOKEEPER_PURGE_INTERVAL); purgeMgr.start(); return port; }