public void recordFailure(Exception exception) { recentFailures.add(1); lastResponseTime.set(new DateTime()); lastFailureException.set(exception); Throwable cause = exception; while (cause.getClass() == RuntimeException.class && cause.getCause() != null) { cause = cause.getCause(); } synchronized (this) { DecayCounter counter = failureCountByType.get(cause.getClass()); if (counter == null) { counter = new DecayCounter(ExponentialDecay.oneMinute()); failureCountByType.put(cause.getClass(), counter); } counter.add(1); } }
@Test public void testAddAfterRescale() { TestingTicker ticker = new TestingTicker(); DecayCounter counter = new DecayCounter(ExponentialDecay.oneMinute(), ticker); counter.add(1); ticker.increment(1, TimeUnit.MINUTES); counter.add(2); double expected = 2 + 1 / Math.E; assertTrue(Math.abs(counter.getCount() - expected) < 1e-9); } }
public void recordStart() { recentRequests.add(1); lastRequestTime.set(new DateTime()); }
public Distribution(double alpha) { digest = new QuantileDigest(MAX_ERROR, alpha); total = new DecayCounter(alpha); }
public Distribution(Distribution distribution) { synchronized (distribution) { digest = new QuantileDigest(distribution.digest); } total = new DecayCounter(distribution.total.getAlpha()); total.merge(distribution.total); }
private void scheduleStatusPrinter(long start) { overallStatusPrintExecutor.scheduleAtFixedRate(() -> { try { System.out.printf( "%6s -- %4s splits (R: %2s L: %3s I: %3s B: %3s W: %3s C: %5s) | %3s tasks (%3s %3s %3s %3s %3s) | Selections: %4s %4s %4s %4s %3s\n", nanosSince(start), taskExecutor.getTotalSplits(), taskExecutor.getRunningSplits(), taskExecutor.getTotalSplits() - taskExecutor.getIntermediateSplits(), taskExecutor.getIntermediateSplits(), taskExecutor.getBlockedSplits(), taskExecutor.getWaitingSplits(), taskExecutor.getCompletedSplitsLevel0() + taskExecutor.getCompletedSplitsLevel1() + taskExecutor.getCompletedSplitsLevel2() + taskExecutor.getCompletedSplitsLevel3() + taskExecutor.getCompletedSplitsLevel4(), taskExecutor.getTasks(), taskExecutor.getRunningTasksLevel0(), taskExecutor.getRunningTasksLevel1(), taskExecutor.getRunningTasksLevel2(), taskExecutor.getRunningTasksLevel3(), taskExecutor.getRunningTasksLevel4(), (int) splitQueue.getSelectedCountLevel0().getOneMinute().getRate(), (int) splitQueue.getSelectedCountLevel1().getOneMinute().getRate(), (int) splitQueue.getSelectedCountLevel2().getOneMinute().getRate(), (int) splitQueue.getSelectedCountLevel3().getOneMinute().getRate(), (int) splitQueue.getSelectedCountLevel4().getOneMinute().getRate()); } catch (Exception ignored) { } }, 1, 1, SECONDS); }
public synchronized void add(long value) { long nowInSeconds = getTickInSeconds(); if (nowInSeconds - landmarkInSeconds >= RESCALE_THRESHOLD_SECONDS) { rescaleToNewLandmark(nowInSeconds); } count += value * weight(nowInSeconds, landmarkInSeconds); }
@Managed public synchronized double getCount() { long nowInSeconds = getTickInSeconds(); return count / weight(nowInSeconds, landmarkInSeconds); }
public DecayCounter(double alpha, Ticker ticker) { this.alpha = alpha; this.ticker = ticker; landmarkInSeconds = getTickInSeconds(); }
@Test public void testAddAfterRescale() { TestingTicker ticker = new TestingTicker(); DecayCounter counter = new DecayCounter(ExponentialDecay.oneMinute(), ticker); counter.add(1); ticker.increment(1, TimeUnit.MINUTES); counter.add(2); double expected = 2 + 1 / Math.E; assertTrue(Math.abs(counter.getCount() - expected) < 1e-9); } }
public void recordSuccess() { recentSuccesses.add(1); lastResponseTime.set(new DateTime()); }
public Distribution(double alpha) { digest = new QuantileDigest(MAX_ERROR, alpha); total = new DecayCounter(alpha); }
public Distribution(Distribution distribution) { synchronized (distribution) { digest = new QuantileDigest(distribution.digest); } total = new DecayCounter(distribution.total.getAlpha()); total.merge(distribution.total); }
private void scheduleStatusPrinter(long start) { overallStatusPrintExecutor.scheduleAtFixedRate(() -> { try { System.out.printf( "%6s -- %4s splits (R: %2s L: %3s I: %3s B: %3s W: %3s C: %5s) | %3s tasks (%3s %3s %3s %3s %3s) | Selections: %4s %4s %4s %4s %3s\n", nanosSince(start), taskExecutor.getTotalSplits(), taskExecutor.getRunningSplits(), taskExecutor.getTotalSplits() - taskExecutor.getIntermediateSplits(), taskExecutor.getIntermediateSplits(), taskExecutor.getBlockedSplits(), taskExecutor.getWaitingSplits(), taskExecutor.getCompletedSplitsLevel0() + taskExecutor.getCompletedSplitsLevel1() + taskExecutor.getCompletedSplitsLevel2() + taskExecutor.getCompletedSplitsLevel3() + taskExecutor.getCompletedSplitsLevel4(), taskExecutor.getTasks(), taskExecutor.getRunningTasksLevel0(), taskExecutor.getRunningTasksLevel1(), taskExecutor.getRunningTasksLevel2(), taskExecutor.getRunningTasksLevel3(), taskExecutor.getRunningTasksLevel4(), (int) splitQueue.getSelectedCountLevel0().getOneMinute().getRate(), (int) splitQueue.getSelectedCountLevel1().getOneMinute().getRate(), (int) splitQueue.getSelectedCountLevel2().getOneMinute().getRate(), (int) splitQueue.getSelectedCountLevel3().getOneMinute().getRate(), (int) splitQueue.getSelectedCountLevel4().getOneMinute().getRate()); } catch (Exception ignored) { } }, 1, 1, SECONDS); }
public synchronized void add(long value) { long nowInSeconds = getTickInSeconds(); if (nowInSeconds - landmarkInSeconds >= RESCALE_THRESHOLD_SECONDS) { rescaleToNewLandmark(nowInSeconds); } count += value * weight(nowInSeconds, landmarkInSeconds); }
@Managed public synchronized double getCount() { long nowInSeconds = getTickInSeconds(); return count / weight(nowInSeconds, landmarkInSeconds); }
public DecayCounter(double alpha, Ticker ticker) { this.alpha = alpha; this.ticker = ticker; landmarkInSeconds = getTickInSeconds(); }