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) {