/** @deprecated since 0.6.0 use Duration parameter rather than long with millis */ public RollingTimeWindowMeanEnricher(Entity producer, AttributeSensor<T> source, AttributeSensor<Double> target, long timePeriod) { this(producer, source, target, Duration.millis(timePeriod)); }
/** returns the duration elapsed since the given timestamp (UTC) */ public static Duration elapsedSince(long timestamp) { return Duration.millis(System.currentTimeMillis() - timestamp); }
/** tries to convert given object to a Duration, parsing strings, treating numbers as millis, etc; * throws IAE if not convertable */ public static Duration of(Object o) { if (o==null) return null; if (o instanceof Duration) return (Duration)o; if (o instanceof String) return parse((String)o); if (o instanceof Number) return millis((Number)o); try { // this allows it to work with groovy TimeDuration Method millisMethod = o.getClass().getMethod("toMilliseconds"); return millis((Long)millisMethod.invoke(o)); } catch (Exception e) { // probably no such method } throw new IllegalArgumentException("Cannot convert "+o+" (type "+o.getClass()+") to a duration"); }
/** returns how much time is left (negative if {@link #isExpired()}) */ public Duration getDurationRemaining() { return Duration.millis(limit.toMilliseconds() - stopwatch.elapsed(TimeUnit.MILLISECONDS)); }
public ScheduledTask delay(long val) { return delay(Duration.millis(val)); }
public ScheduledTask period(long val) { return period(Duration.millis(val)); }
public static JmxFeed connectMXBeanSensors(EntityLocal entity, long jmxPollPeriodMs) { return connectMXBeanSensors(entity, Duration.millis(jmxPollPeriodMs)); }
public static <T> void continually(Map<String,?> flags, Supplier<? extends T> supplier, Predicate<T> predicate, String errMsg) { Duration duration = toDuration(flags.get("timeout"), Duration.ONE_SECOND); Duration period = toDuration(flags.get("period"), Duration.millis(10)); long periodMs = period.toMilliseconds(); long startTime = System.currentTimeMillis(); long expireTime = startTime+duration.toMilliseconds(); boolean first = true; while (first || System.currentTimeMillis() <= expireTime) { assertTrue(predicate.apply(supplier.get()), "supplied="+supplier.get()+"; predicate="+predicate+(errMsg!=null?"; "+errMsg:"")); if (periodMs > 0) sleep(periodMs); first = false; } }
currentProblemLoggedAsWarning = true; log.warn("Read of " + entity + "->" + sensor + " gave " + type + " (grace period expired, occurring for "+Duration.millis(nowTime - currentProblemStartTimeCache)+")"+ ": " + val); if (log.isDebugEnabled() && val instanceof Throwable)
public static <T> void eventually(Map<String,?> flags, Supplier<? extends T> supplier, Predicate<T> predicate, String errMsg) { Duration timeout = toDuration(flags.get("timeout"), Duration.ONE_SECOND); Duration period = toDuration(flags.get("period"), Duration.millis(10)); long periodMs = period.toMilliseconds(); long startTime = System.currentTimeMillis(); long expireTime = startTime+timeout.toMilliseconds(); boolean first = true; T supplied = supplier.get(); while (first || System.currentTimeMillis() <= expireTime) { supplied = supplier.get(); if (predicate.apply(supplied)) { return; } first = false; if (periodMs > 0) sleep(periodMs); } fail("supplied="+supplied+"; predicate="+predicate+(errMsg!=null?"; "+errMsg:"")); }
public static void succeedsContinually(Map<String,?> flags, Callable<?> job) { Duration duration = toDuration(flags.get("timeout"), Duration.ONE_SECOND); Duration period = toDuration(flags.get("period"), Duration.millis(10)); long periodMs = period.toMilliseconds(); long startTime = System.currentTimeMillis(); long expireTime = startTime+duration.toMilliseconds(); boolean first = true; while (first || System.currentTimeMillis() <= expireTime) { try { job.call(); } catch (Exception e) { throw propagate(e); } if (periodMs > 0) sleep(periodMs); first = false; } }
Duration minPeriod = (fixedPeriod != null) ? fixedPeriod : toDuration(flags.get("minPeriod"), Duration.millis(1)); Duration maxPeriod = (fixedPeriod != null) ? fixedPeriod : toDuration(flags.get("maxPeriod"), Duration.millis(500)); int maxAttempts = get(flags, "maxAttempts", Integer.MAX_VALUE); int attempt = 0;
Duration toWait = Duration.millis(firstStartTime + CassandraCluster.DELAY_AFTER_FIRST.toMilliseconds() - System.currentTimeMillis()); if (toWait.toMilliseconds()>0) { log.info("Launching " + entity + ": delaying launch of non-first node by "+toWait+" to prevent schema disagreements");