public void report(InetAddress ep) { long now = Clock.instance.nanoTime(); ArrivalWindow heartbeatWindow = arrivalSamples.get(ep); if (heartbeatWindow == null) { // avoid adding an empty ArrivalWindow to the Map heartbeatWindow = new ArrivalWindow(SAMPLE_SIZE); heartbeatWindow.add(now, ep); heartbeatWindow = arrivalSamples.putIfAbsent(ep, heartbeatWindow); if (heartbeatWindow != null) heartbeatWindow.add(now, ep); } else { heartbeatWindow.add(now, ep); } if (logger.isTraceEnabled() && heartbeatWindow != null) logger.trace("Average for {} is {}", ep, heartbeatWindow.mean()); }
public String toString() { StringBuilder sb = new StringBuilder(); Set<InetAddress> eps = arrivalSamples.keySet(); sb.append("-----------------------------------------------------------------------"); for (InetAddress ep : eps) { ArrivalWindow hWnd = arrivalSamples.get(ep); sb.append(ep + " : "); sb.append(hWnd.toString()); sb.append(System.getProperty("line.separator")); } sb.append("-----------------------------------------------------------------------"); return sb.toString(); }
public void report(InetAddress ep) { if (logger.isTraceEnabled()) logger.trace("reporting {}", ep); long now = System.nanoTime(); ArrivalWindow heartbeatWindow = arrivalSamples.get(ep); if (heartbeatWindow == null) { // avoid adding an empty ArrivalWindow to the Map heartbeatWindow = new ArrivalWindow(SAMPLE_SIZE); heartbeatWindow.add(now, ep); arrivalSamples.put(ep, heartbeatWindow); } else { heartbeatWindow.add(now, ep); } }
@Override public TabularData getPhiValues() throws OpenDataException { final CompositeType ct = new CompositeType("Node", "Node", new String[]{"Endpoint", "PHI"}, new String[]{"IP of the endpoint", "PHI value"}, new OpenType[]{SimpleType.STRING, SimpleType.DOUBLE}); final TabularDataSupport results = new TabularDataSupport(new TabularType("PhiList", "PhiList", ct, new String[]{"Endpoint"})); for (final Map.Entry<InetAddress, ArrivalWindow> entry : arrivalSamples.entrySet()) { final ArrivalWindow window = entry.getValue(); if (window.mean() > 0) { final double phi = window.getLastReportedPhi(); if (phi != Double.MIN_VALUE) { // returned values are scaled by PHI_FACTOR so that the are on the same scale as PhiConvictThreshold final CompositeData data = new CompositeDataSupport(ct, new String[]{"Endpoint", "PHI"}, new Object[]{entry.getKey().toString(), phi * PHI_FACTOR}); results.put(data); } } } return results; }
double phi(long tnow) { assert arrivalIntervals.mean() > 0 && tLast > 0; // should not be called before any samples arrive long t = tnow - tLast; lastReportedPhi = t / mean(); return lastReportedPhi; }
return; double phi = hbWnd.phi(now); if (logger.isTraceEnabled()) logger.trace("PHI for {} : {}", ep, phi); logger.trace("Node {} phi {} > {}; intervals: {} mean: {}", new Object[]{ep, PHI_FACTOR * phi, getPhiConvictThreshold(), hbWnd, hbWnd.mean()}); for (IFailureDetectionEventListener listener : fdEvntListeners) logger.trace("mean for {} : {}", ep, hbWnd.mean());
@Override public TabularData getPhiValues() throws OpenDataException { final CompositeType ct = new CompositeType("Node", "Node", new String[]{"Endpoint", "PHI"}, new String[]{"IP of the endpoint", "PHI value"}, new OpenType[]{SimpleType.STRING, SimpleType.DOUBLE}); final TabularDataSupport results = new TabularDataSupport(new TabularType("PhiList", "PhiList", ct, new String[]{"Endpoint"})); for (final Map.Entry<InetAddress, ArrivalWindow> entry : arrivalSamples.entrySet()) { final ArrivalWindow window = entry.getValue(); if (window.mean() > 0) { final double phi = window.getLastReportedPhi(); if (phi != Double.MIN_VALUE) { // returned values are scaled by PHI_FACTOR so that the are on the same scale as PhiConvictThreshold final CompositeData data = new CompositeDataSupport(ct, new String[]{"Endpoint", "PHI"}, new Object[]{entry.getKey().toString(), phi * PHI_FACTOR}); results.put(data); } } } return results; }
double phi(long tnow) { assert arrivalIntervals.mean() > 0 && tLast > 0; // should not be called before any samples arrive long t = tnow - tLast; lastReportedPhi = t / mean(); return lastReportedPhi; }
public void report(InetAddress ep) { long now = Clock.instance.nanoTime(); ArrivalWindow heartbeatWindow = arrivalSamples.get(ep); if (heartbeatWindow == null) { // avoid adding an empty ArrivalWindow to the Map heartbeatWindow = new ArrivalWindow(SAMPLE_SIZE); heartbeatWindow.add(now, ep); heartbeatWindow = arrivalSamples.putIfAbsent(ep, heartbeatWindow); if (heartbeatWindow != null) heartbeatWindow.add(now, ep); } else { heartbeatWindow.add(now, ep); } if (logger.isTraceEnabled() && heartbeatWindow != null) logger.trace("Average for {} is {}", ep, heartbeatWindow.mean()); }
return; double phi = hbWnd.phi(now); if (logger.isTraceEnabled()) logger.trace("PHI for {} : {}", ep, phi); logger.trace("Node {} phi {} > {}; intervals: {} mean: {}", new Object[]{ep, PHI_FACTOR * phi, getPhiConvictThreshold(), hbWnd, hbWnd.mean()}); for (IFailureDetectionEventListener listener : fdEvntListeners) logger.trace("mean for {} : {}", ep, hbWnd.mean());
@Override public TabularData getPhiValues() throws OpenDataException { final CompositeType ct = new CompositeType("Node", "Node", new String[]{"Endpoint", "PHI"}, new String[]{"IP of the endpoint", "PHI value"}, new OpenType[]{SimpleType.STRING, SimpleType.DOUBLE}); final TabularDataSupport results = new TabularDataSupport(new TabularType("PhiList", "PhiList", ct, new String[]{"Endpoint"})); for (final Map.Entry<InetAddress, ArrivalWindow> entry : arrivalSamples.entrySet()) { final ArrivalWindow window = entry.getValue(); if (window.mean() > 0) { final double phi = window.getLastReportedPhi(); if (phi != Double.MIN_VALUE) { // returned values are scaled by PHI_FACTOR so that the are on the same scale as PhiConvictThreshold final CompositeData data = new CompositeDataSupport(ct, new String[]{"Endpoint", "PHI"}, new Object[]{entry.getKey().toString(), phi * PHI_FACTOR}); results.put(data); } } } return results; }
double phi(long tnow) { assert arrivalIntervals.mean() > 0 && tLast > 0; // should not be called before any samples arrive long t = tnow - tLast; return t / mean(); }
public void report(InetAddress ep) { long now = Clock.instance.nanoTime(); ArrivalWindow heartbeatWindow = arrivalSamples.get(ep); if (heartbeatWindow == null) { // avoid adding an empty ArrivalWindow to the Map heartbeatWindow = new ArrivalWindow(SAMPLE_SIZE); heartbeatWindow.add(now, ep); heartbeatWindow = arrivalSamples.putIfAbsent(ep, heartbeatWindow); if (heartbeatWindow != null) heartbeatWindow.add(now, ep); } else { heartbeatWindow.add(now, ep); } if (logger.isTraceEnabled() && heartbeatWindow != null) logger.trace("Average for {} is {}", ep, heartbeatWindow.mean()); }
return; double phi = hbWnd.phi(now); if (logger.isTraceEnabled()) logger.trace("PHI for {} : {}", ep, phi); logger.trace("Node {} phi {} > {}; intervals: {} mean: {}", new Object[]{ep, PHI_FACTOR * phi, getPhiConvictThreshold(), hbWnd, hbWnd.mean()}); for (IFailureDetectionEventListener listener : fdEvntListeners) logger.trace("mean for {} : {}", ep, hbWnd.mean());
double phi(long tnow) { assert arrivalIntervals.mean() > 0 && tLast > 0; // should not be called before any samples arrive long t = tnow - tLast; lastReportedPhi = t / mean(); return lastReportedPhi; }