diff --git a/eureka-core/src/main/java/com/netflix/eureka/registry/RemoteRegionRegistry.java b/eureka-core/src/main/java/com/netflix/eureka/registry/RemoteRegionRegistry.java index 242fccf87e..6c9cec34d2 100644 --- a/eureka-core/src/main/java/com/netflix/eureka/registry/RemoteRegionRegistry.java +++ b/eureka-core/src/main/java/com/netflix/eureka/registry/RemoteRegionRegistry.java @@ -94,6 +94,8 @@ public class RemoteRegionRegistry implements LookupService { private volatile boolean readyForServingData; private final EurekaHttpClient eurekaHttpClient; private long timeOfLastSuccessfulRemoteFetch = System.currentTimeMillis(); + private long deltaSuccesses = 0; + private long deltaMismatches = 0; @Inject public RemoteRegionRegistry(EurekaServerConfig serverConfig, @@ -283,8 +285,11 @@ private boolean fetchAndStoreDelta() throws Throwable { } // There is a diff in number of instances for some reason - if ((!reconcileHashCode.equals(delta.getAppsHashCode()))) { + if (!reconcileHashCode.equals(delta.getAppsHashCode())) { + deltaMismatches++; return reconcileAndLogDifference(delta, reconcileHashCode); + } else { + deltaSuccesses++; } } @@ -515,4 +520,14 @@ private boolean shouldUseExperimentalTransport() { public long getTimeOfLastSuccessfulRemoteFetch() { return (System.currentTimeMillis() - timeOfLastSuccessfulRemoteFetch) / 1000; } + + @com.netflix.servo.annotations.Monitor(name = METRIC_REGISTRY_PREFIX + "remoteDeltaSuccesses", type = DataSourceType.COUNTER) + public long getRemoteFetchSuccesses() { + return deltaSuccesses; + } + + @com.netflix.servo.annotations.Monitor(name = METRIC_REGISTRY_PREFIX + "remoteDeltaMismatches", type = DataSourceType.COUNTER) + public long getRemoteFetchMismatches() { + return deltaMismatches; + } }