You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/07/10 04:36:23 UTC

[shardingsphere-elasticjob-lite] branch master updated: Test case `org.apache.shardingsphere.elasticjob.lite.integrate.enable.OneOffEnabledJobIntegrateTest` may block or throw exception sometimes (#1014)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new b7410b8  Test case `org.apache.shardingsphere.elasticjob.lite.integrate.enable.OneOffEnabledJobIntegrateTest` may block or throw exception sometimes (#1014)
b7410b8 is described below

commit b7410b81a1b84675433593d43915b3a715da30d0
Author: viviel <37...@users.noreply.github.com>
AuthorDate: Fri Jul 10 12:36:12 2020 +0800

    Test case `org.apache.shardingsphere.elasticjob.lite.integrate.enable.OneOffEnabledJobIntegrateTest` may block or throw exception sometimes (#1014)
---
 .../lite/internal/election/ElectionListenerManager.java          | 9 ++++++++-
 .../elasticjob/lite/internal/server/ServerNode.java              | 8 +++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/election/ElectionListenerManager.java b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/election/ElectionListenerManager.java
index 6bd1142..28b45b9 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/election/ElectionListenerManager.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/election/ElectionListenerManager.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.elasticjob.lite.internal.election;
 
 import org.apache.curator.framework.recipes.cache.TreeCacheEvent.Type;
+import org.apache.shardingsphere.elasticjob.lite.handler.sharding.JobInstance;
 import org.apache.shardingsphere.elasticjob.lite.internal.listener.AbstractJobListener;
 import org.apache.shardingsphere.elasticjob.lite.internal.listener.AbstractListenerManager;
 import org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobRegistry;
@@ -26,6 +27,8 @@ import org.apache.shardingsphere.elasticjob.lite.internal.server.ServerService;
 import org.apache.shardingsphere.elasticjob.lite.internal.server.ServerStatus;
 import org.apache.shardingsphere.elasticjob.lite.reg.base.CoordinatorRegistryCenter;
 
+import java.util.Objects;
+
 /**
  * Election listener manager.
  */
@@ -70,7 +73,11 @@ public final class ElectionListenerManager extends AbstractListenerManager {
         }
         
         private boolean isPassiveElection(final String path, final Type eventType) {
-            return isLeaderCrashed(path, eventType) && serverService.isAvailableServer(JobRegistry.getInstance().getJobInstance(jobName).getIp());
+            JobInstance jobInstance = JobRegistry.getInstance().getJobInstance(jobName);
+            if (Objects.isNull(jobInstance)) {
+                return false;
+            }
+            return isLeaderCrashed(path, eventType) && serverService.isAvailableServer(jobInstance.getIp());
         }
         
         private boolean isLeaderCrashed(final String path, final Type eventType) {
diff --git a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerNode.java b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerNode.java
index d6e340b..090b3f9 100644
--- a/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerNode.java
+++ b/elasticjob-lite/elasticjob-lite-core/src/main/java/org/apache/shardingsphere/elasticjob/lite/internal/server/ServerNode.java
@@ -17,10 +17,12 @@
 
 package org.apache.shardingsphere.elasticjob.lite.internal.server;
 
+import org.apache.shardingsphere.elasticjob.lite.handler.sharding.JobInstance;
 import org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobRegistry;
 import org.apache.shardingsphere.elasticjob.lite.internal.storage.JobNodePath;
 import org.apache.shardingsphere.elasticjob.lite.util.env.IpUtils;
 
+import java.util.Objects;
 import java.util.regex.Pattern;
 
 /**
@@ -58,7 +60,11 @@ public final class ServerNode {
      * @return is server path for localhost or not
      */
     public boolean isLocalServerPath(final String path) {
-        return path.equals(jobNodePath.getFullPath(String.format(SERVERS, JobRegistry.getInstance().getJobInstance(jobName).getIp())));
+        JobInstance jobInstance = JobRegistry.getInstance().getJobInstance(jobName);
+        if (Objects.isNull(jobInstance)) {
+            return false;
+        }
+        return path.equals(jobNodePath.getFullPath(String.format(SERVERS, jobInstance.getIp())));
     }
     
     String getServerNode(final String ip) {