Fix lifecycle cannot trigger job (#1936)
* Fix lifecycle cannot trigger job
* Complete test for trigger
diff --git a/elasticjob-lite/elasticjob-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/operate/JobOperateAPIImpl.java b/elasticjob-lite/elasticjob-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/operate/JobOperateAPIImpl.java
index 35ba1f9..5001610 100644
--- a/elasticjob-lite/elasticjob-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/operate/JobOperateAPIImpl.java
+++ b/elasticjob-lite/elasticjob-lite-lifecycle/src/main/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/operate/JobOperateAPIImpl.java
@@ -20,6 +20,7 @@
import com.google.common.base.Preconditions;
import org.apache.shardingsphere.elasticjob.infra.handler.sharding.JobInstance;
import org.apache.shardingsphere.elasticjob.infra.yaml.YamlEngine;
+import org.apache.shardingsphere.elasticjob.lite.internal.instance.InstanceService;
import org.apache.shardingsphere.elasticjob.lite.internal.server.ServerStatus;
import org.apache.shardingsphere.elasticjob.lite.internal.storage.JobNodePath;
import org.apache.shardingsphere.elasticjob.lite.lifecycle.api.JobOperateAPI;
@@ -41,10 +42,7 @@
@Override
public void trigger(final String jobName) {
Preconditions.checkNotNull(jobName, "Job name cannot be null");
- JobNodePath jobNodePath = new JobNodePath(jobName);
- for (String each : regCenter.getChildrenKeys(jobNodePath.getInstancesNodePath())) {
- regCenter.persist(jobNodePath.getInstanceNodePath(each), "TRIGGER");
- }
+ new InstanceService(regCenter, jobName).triggerAllInstances();
}
@Override
diff --git a/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/operate/JobOperateAPIImplTest.java b/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/operate/JobOperateAPIImplTest.java
index 6e9c0a7..7e85aaf 100644
--- a/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/operate/JobOperateAPIImplTest.java
+++ b/elasticjob-lite/elasticjob-lite-lifecycle/src/test/java/org/apache/shardingsphere/elasticjob/lite/lifecycle/internal/operate/JobOperateAPIImplTest.java
@@ -48,11 +48,14 @@
@Test
public void assertTriggerWithJobName() {
+ when(regCenter.isExisted("/test_job")).thenReturn(true);
+ when(regCenter.isExisted("/test_job/trigger/ip1@-@defaultInstance")).thenReturn(false);
+ when(regCenter.isExisted("/test_job/trigger/ip2@-@defaultInstance")).thenReturn(false);
when(regCenter.getChildrenKeys("/test_job/instances")).thenReturn(Arrays.asList("ip1@-@defaultInstance", "ip2@-@defaultInstance"));
jobOperateAPI.trigger("test_job");
verify(regCenter).getChildrenKeys("/test_job/instances");
- verify(regCenter).persist("/test_job/instances/ip1@-@defaultInstance", "TRIGGER");
- verify(regCenter).persist("/test_job/instances/ip2@-@defaultInstance", "TRIGGER");
+ verify(regCenter).persist("/test_job/trigger/ip1@-@defaultInstance", "");
+ verify(regCenter).persist("/test_job/trigger/ip2@-@defaultInstance", "");
}
@Test