static public final Map<String, Timer> getSimpleTimerMap() { PropertiesManager.TimerInfo ti = new PropertiesManager.TimerInfo(); ti.numCollectors = 1; ti.step = 300; ti.timeout = 10; Timer t = new Timer(Timer.DEFAULTNAME, ti); Map<String, Timer> timerMap = new HashMap<String, Timer>(1); timerMap.put(t.getName(), t); return timerMap; }
log(Level.INFO, "skipping timer, empty"); return; log(Level.DEBUG, "One collect is launched"); Date start = new Date(); try { if(!collectMutex.tryAcquire(getTimeout(), TimeUnit.SECONDS)) { log(Level.FATAL, "A collect failed because a start time out"); return; log(Level.INFO, "A collect start was interrupted"); Thread.currentThread().interrupt(); return; startCollect(); try { try { if(isCollectRunning()) { List<Future<Object>> scheduled = tpool.invokeAll(toSchedule, getStep() - getTimeout() * 2, TimeUnit.SECONDS); running.addAll(scheduled); tpool.shutdown(); tpool.awaitTermination(getStep() - getTimeout() * 2, TimeUnit.SECONDS); log(Level.DEBUG, "collector thread refused"); } catch (InterruptedException e) { log(Level.INFO, "Collect interrupted"); Thread.currentThread().interrupt(); stopCollect();
public void start(String[] args) throws Exception { PropertiesManager pm = new PropertiesManager(new File(propFile)); jrds.JrdsLoggerConfiguration.configure(pm); System.getProperties().setProperty("java.awt.headless", "true"); System.getProperties().putAll(pm); HostsList hl = new HostsList(pm); logger.debug("Scanning dir"); for(Timer t: hl.getTimers()) { t.collectAll(); } }
public void interrupt() { log(Level.DEBUG, "timer interrupted"); synchronized (running) { if(tpool != null) { tpool.shutdownNow(); } } dumpCollectHanged(); }
public void startTimer(java.util.Timer collectTimer) { TimerTask collector = new TimerTask() { public void run() { // The collect is done in a different thread // So a collect failure will no prevent other collect from // running Thread subcollector = new Thread("Collector/" + Timer.this.name) { @Override public void run() { try { Timer.this.collectAll(); } catch (RuntimeException e) { Timer.this.log(Level.FATAL, e, "A fatal error occured during collect: %s", e.getMessage()); } } }; subcollector.setDaemon(true); subcollector.start(); } }; collectTimer.scheduleAtFixedRate(collector, getTimeout() * 1000L, getStep() * 1000L); }
/** * Ensure that all collects are stopped, some slow probes might need a * little help */ public void stop() { started = false; if(collectTimer != null) collectTimer.cancel(); collectTimer = null; for(Starter s: topStarters) { s.doStop(); } for(jrds.starter.Timer t: timers.values()) { t.stopCollect(); for(HostStarter h: t.getAllHosts()) { h.stopCollect(); for(Probe<?, ?> p: h.getAllProbes()) { p.stopCollect(); } } t.interrupt(); } }
@Test public void buildDefault() throws IOException { PropertiesManager pm = Tools.makePm(testFolder, "timeout=1", "step=5", "slowcollecttime=1"); Timer t = new Timer(Timer.DEFAULTNAME, pm.timers.get(Timer.DEFAULTNAME)); Assert.assertEquals("bad timeout", 1, t.getTimeout()); Assert.assertEquals("bad step", 5, t.getStep()); Assert.assertEquals("bad slow collect time", 1, t.getSlowCollectTime()); }
jrds.starter.Timer t = new jrds.starter.Timer(e.getKey(), e.getValue()); t.setParent(this); timers.put(e.getKey(), t); for(HostStarter host: timer.getAllHosts()) { hostsTags.addAll(host.getTags()); host.configureStarters(pm); log(Level.DEBUG, "timer starters added %s for timer %s", timerStarterClasses, timer.getName()); for(Class<? extends Starter> starterClass: timerStarterClasses) { try { timer.registerStarter(starterClass.newInstance()); } catch (Throwable e) { log(Level.ERROR, e, "Starter %s failed to register for timer %s: %s", starterClass, timer.getName(), e.getMessage()); timer.configureStarters(pm);
logger.trace(Util.delayedFormatString("probe %s/%s will use timer %s", host, type, timer)); p.setStep(timer.getStep()); p.setTimeout(timer.getTimeout()); HostStarter shost = timer.getHost(host); p.setHost(shost);
private HostStarter addConnection(Starter cnx) throws IOException { String truststore = getClass().getClassLoader().getResource("localhost.jks").getFile(); PropertiesManager pm = Tools.makePm(testFolder, "timeout=1", "collectorThreads=1", "ssl.protocol=TLS", "ssl.strict=true", "ssl.truststore=" + truststore, "ssl.trustpassword=123456"); HostStarter localhost = new HostStarter(new HostInfo("localhost")); Timer t = Tools.getDefaultTimer(); localhost.setParent(t); localhost.getHost().setHostDir(testFolder.getRoot()); t.registerStarter(new SSLStarter()); t.registerStarter(new SocketFactory()); t.configureStarters(pm); localhost.registerStarter(cnx); cnx.configure(pm); return localhost; }
static public final Timer getDefaultTimer() { TimerInfo ti = new PropertiesManager.TimerInfo(); ti.numCollectors = 1; ti.slowCollectTime = 5; ti.step = 300; ti.timeout = 10; return new Timer("TimerTester", ti); }
log(Level.DEBUG, "collect ran for %dms", (end - start)); Timer timer = (Timer) getParent().getParent(); if((end - start) > (timer.getSlowCollectTime() * 1000)) { log(Level.WARN, "slow collect time %.0fs", 1.0 * (end - start) / 1000);
@Test public void buildOther() throws IOException { PropertiesManager pm = Tools.makePm(testFolder, "timeout=1", "step=5", "timers=slow", "timer.slow.timeout=30", "timer.slow.step=3600", "timer.slow.slowcollecttime=15"); Timer t = new Timer("slow", pm.timers.get("slow")); Assert.assertEquals("bad timeout", 30, t.getTimeout()); Assert.assertEquals("bad step", 3600, t.getStep()); Assert.assertEquals("bad slow collect time", 15, t.getSlowCollectTime()); }
public HostStarter getHost(HostInfo info) { String hostName = info.getName(); HostStarter starter = hostList.get(hostName); if(starter == null) { starter = new HostStarter(info); hostList.put(hostName, starter); starter.setTimeout(getTimeout()); starter.setStep(getStep()); starter.setParent(this); } return starter; }