You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by wu...@apache.org on 2022/10/16 09:23:29 UTC

[shardingsphere-elasticjob] branch master updated: Avoid endless loop in ServerService (#2132)

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

wuweijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere-elasticjob.git


The following commit(s) were added to refs/heads/master by this push:
     new 8b64a8c94 Avoid endless loop in ServerService (#2132)
8b64a8c94 is described below

commit 8b64a8c94830aaa96b9b0ddcba80bc31b146eecd
Author: 吴伟杰 <wu...@apache.org>
AuthorDate: Sun Oct 16 17:23:22 2022 +0800

    Avoid endless loop in ServerService (#2132)
---
 .../elasticjob/lite/internal/server/ServerService.java               | 4 ++--
 .../elasticjob/lite/internal/server/ServerServiceTest.java           | 5 +++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerService.java b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerService.java
index 1b785da12..b2bb8a223 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerService.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerService.java
@@ -96,10 +96,10 @@ public final class ServerService {
      */
     public boolean isEnableServer(final String ip) {
         String serverStatus = jobNodeStorage.getJobNodeData(serverNode.getServerNode(ip));
-        while (Strings.isNullOrEmpty(serverStatus)) {
+        for (int i = 0; Strings.isNullOrEmpty(serverStatus) && i < 10; i++) {
             BlockUtils.waitingShortTime();
             serverStatus = jobNodeStorage.getJobNodeData(serverNode.getServerNode(ip));
         }
-        return !ServerStatus.DISABLED.name().equals(serverStatus);
+        return ServerStatus.ENABLED.name().equals(serverStatus);
     }
 }
diff --git a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerServiceTest.java b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerServiceTest.java
index e136af65f..272e5cafa 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerServiceTest.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/test/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerServiceTest.java
@@ -135,4 +135,9 @@ public final class ServerServiceTest {
         when(jobNodeStorage.getJobNodeData("servers/127.0.0.1")).thenReturn("", ServerStatus.ENABLED.name());
         assertTrue(serverService.isEnableServer("127.0.0.1"));
     }
+    
+    @Test
+    public void assertServerNodeAbsent() {
+        assertFalse(serverService.isEnableServer("127.0.0.1"));
+    }
 }