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");