This is an automated email from the ASF dual-hosted git repository.

impactcn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new d711cd4be [type: refactor] Optimize admin upstream check (#3240)
d711cd4be is described below

commit d711cd4bec82953bbdba11d30cde9312bb446caa
Author: xiaoyu <[email protected]>
AuthorDate: Wed Apr 13 11:44:53 2022 +0800

    [type: refactor] Optimize admin upstream check (#3240)
    
    * [type: refactor] Optimize admin upstream check
    
    * [type: refactor] Optimize admin upstream check
---
 .../admin/service/impl/UpstreamCheckService.java   | 25 +++++++---------------
 .../admin/service/UpstreamCheckServiceTest.java    |  2 +-
 2 files changed, 9 insertions(+), 18 deletions(-)

diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/UpstreamCheckService.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/UpstreamCheckService.java
index 9a2735684..7b6582b17 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/UpstreamCheckService.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/UpstreamCheckService.java
@@ -152,19 +152,10 @@ public class UpstreamCheckService {
      */
     @PreDestroy
     public void close() {
-        if (Objects.isNull(scheduledFuture)) {
-            return;
-        }
-
-        scheduledFuture.cancel(false);
-        executor.shutdownNow();
-        try {
-            executor.awaitTermination(5, TimeUnit.SECONDS);
-        } catch (InterruptedException ex) {
-            LOG.error("shutdown executor error", ex);
-            Thread.currentThread().interrupt();
+        if (checked) {
+            scheduledFuture.cancel(false);
+            executor.shutdown();
         }
-
     }
 
     /**
@@ -184,11 +175,11 @@ public class UpstreamCheckService {
      * @return whether this module handles
      */
     public boolean submit(final String selectorId, final CommonUpstream 
commonUpstream) {
-        if (!REGISTER_TYPE_HTTP.equalsIgnoreCase(registerType)) {
+        if (!REGISTER_TYPE_HTTP.equalsIgnoreCase(registerType) || !checked) {
             return false;
         }
 
-        List<CommonUpstream> upstreams = 
UPSTREAM_MAP.computeIfAbsent(selectorId, k -> new CopyOnWriteArrayList());
+        List<CommonUpstream> upstreams = 
UPSTREAM_MAP.computeIfAbsent(selectorId, k -> new CopyOnWriteArrayList<>());
         if (commonUpstream.isStatus()) {
             Optional<CommonUpstream> exists = upstreams.stream().filter(item 
-> StringUtils.isNotBlank(item.getUpstreamUrl())
                     && 
item.getUpstreamUrl().equals(commonUpstream.getUpstreamUrl())).findFirst();
@@ -284,13 +275,13 @@ public class UpstreamCheckService {
             updateSelectorHandler(selectorId, successList);
         } else {
             UPSTREAM_MAP.remove(selectorId);
-            updateSelectorHandler(selectorId, Collections.EMPTY_LIST);
+            updateSelectorHandler(selectorId, new ArrayList<>());
         }
     }
 
     private void removePendingSync(final List<CommonUpstream> successList) {
-        PENDING_SYNC.removeIf(item -> NumberUtils.INTEGER_ZERO.equals(item));
-        successList.stream().forEach(commonUpstream -> 
PENDING_SYNC.remove(commonUpstream.hashCode()));
+        PENDING_SYNC.removeIf(NumberUtils.INTEGER_ZERO::equals);
+        successList.forEach(commonUpstream -> 
PENDING_SYNC.remove(commonUpstream.hashCode()));
     }
 
     private void updateSelectorHandler(final String selectorId, final 
List<CommonUpstream> aliveList) {
diff --git 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/UpstreamCheckServiceTest.java
 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/UpstreamCheckServiceTest.java
index f78f9f535..fcd8a64df 100644
--- 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/UpstreamCheckServiceTest.java
+++ 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/UpstreamCheckServiceTest.java
@@ -126,7 +126,7 @@ public final class UpstreamCheckServiceTest {
     @BeforeEach
     public void setUp() {
         shenyuRegisterCenterConfig.setRegisterType("http");
-
+        
shenyuRegisterCenterConfig.getProps().setProperty(Constants.IS_CHECKED, "true");
         // get static variable reference by reflection
         upstreamMap = (Map<String, List<DivideUpstream>>) 
ReflectionTestUtils.getField(UpstreamCheckService.class, "UPSTREAM_MAP");
         zombieSet = (Set<ZombieUpstream>) 
ReflectionTestUtils.getField(UpstreamCheckService.class, "ZOMBIE_SET");

Reply via email to