From 53392471a5140f530d4cb70b7c4069cc13d278a7 Mon Sep 17 00:00:00 2001 From: MI-cool Date: Fri, 10 Dec 2021 14:48:41 +0800 Subject: [PATCH 1/3] reduce high load caused by EurekaInstanceRenewedEvent --- .../netflix/eureka/server/InstanceRegistry.java | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistry.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistry.java index 8c1e7d886..f8f572139 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistry.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistry.java @@ -97,18 +97,11 @@ public class InstanceRegistry extends PeerAwareInstanceRegistryImpl implements A @Override public boolean renew(final String appName, final String serverId, boolean isReplication) { log("renew " + appName + " serverId " + serverId + ", isReplication {}" + isReplication); - List applications = getSortedApplications(); - for (Application input : applications) { - if (input.getName().equals(appName)) { - InstanceInfo instance = null; - for (InstanceInfo info : input.getInstances()) { - if (info.getId().equals(serverId)) { - instance = info; - break; - } - } - publishEvent(new EurekaInstanceRenewedEvent(this, appName, serverId, instance, isReplication)); - break; + Application application = getApplication(appName); + if (application != null) { + InstanceInfo instanceInfo = application.getByInstanceId(serverId); + if (instanceInfo != null) { + publishEvent(new EurekaInstanceRenewedEvent(this, appName, serverId, instanceInfo, isReplication)); } } return super.renew(appName, serverId, isReplication); From b7bfc4269725ba9f353756b5d2f2a36febf8e8ea Mon Sep 17 00:00:00 2001 From: MI-cool Date: Mon, 27 Dec 2021 12:37:10 +0800 Subject: [PATCH 2/3] remove unused import --- .../cloud/netflix/eureka/server/InstanceRegistry.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistry.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistry.java index f8f572139..3ca37a6c6 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistry.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistry.java @@ -16,8 +16,6 @@ package org.springframework.cloud.netflix.eureka.server; -import java.util.List; - import com.netflix.appinfo.ApplicationInfoManager; import com.netflix.appinfo.InstanceInfo; import com.netflix.discovery.EurekaClient; From d5637172f216ce5ee6ca1c7f0163bf6af1955649 Mon Sep 17 00:00:00 2001 From: MI-cool Date: Mon, 27 Dec 2021 14:45:50 +0800 Subject: [PATCH 3/3] fix test testRenew() --- .../cloud/netflix/eureka/server/InstanceRegistryTests.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistryTests.java b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistryTests.java index a420f0954..5be5b60b8 100644 --- a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistryTests.java +++ b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/InstanceRegistryTests.java @@ -16,7 +16,6 @@ package org.springframework.cloud.netflix.eureka.server; -import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; @@ -125,10 +124,8 @@ class InstanceRegistryTests { final InstanceInfo instanceInfo2 = getInstanceInfo(APP_NAME, HOST_NAME, "my-host-name:8009", 8009, null); // creating application list with an app having two instances final Application application = new Application(APP_NAME, Arrays.asList(instanceInfo1, instanceInfo2)); - final List applications = new ArrayList<>(); - applications.add(application); - // stubbing applications list - doReturn(applications).when(instanceRegistry).getSortedApplications(); + // stubbing application + doReturn(application).when(instanceRegistry).getApplication(APP_NAME); // calling tested method instanceRegistry.renew(APP_NAME, INSTANCE_ID, false); instanceRegistry.renew(APP_NAME, "my-host-name:8009", false);