From 241dce57fab88f18fb91939d5423aac246769d0b Mon Sep 17 00:00:00 2001 From: tjq Date: Thu, 16 Apr 2020 19:37:41 +0800 Subject: [PATCH] change serialization framwork(built-in java -> jackson-cbor) --- .DS_Store | Bin 0 -> 6148 bytes oh-my-scheduler-client/pom.xml | 7 --- .../github/kfcfans/oms/client/OhMyClient.java | 14 +++--- oh-my-scheduler-common/pom.xml | 13 ++++++ .../kfcfans/common/OmsSerializable.java | 12 +++++ .../request/ServerQueryInstanceStatusReq.java | 5 +- .../common/request/ServerScheduleJobReq.java | 4 +- .../common/request/ServerStopInstanceReq.java | 4 +- .../TaskTrackerReportInstanceStatusReq.java | 4 +- .../common/request/WorkerHeartbeat.java | 4 +- .../kfcfans/common/response/AskResponse.java | 4 +- .../kfcfans/common/response/ResultDTO.java | 3 +- .../kfcfans/common/utils/JsonUtils.java | 27 +++++++++++ oh-my-scheduler-server/pom.xml | 9 ---- .../FriendQueryWorkerClusterStatusReq.java | 4 +- .../oms/server/akka/requests/Ping.java | 4 +- .../repository/InstanceLogRepository.java | 6 +-- .../timing/InstanceStatusCheckService.java | 6 +-- .../src/main/resources/application.properties | 3 +- .../src/main/resources/oms-server.akka.conf | 6 ++- oh-my-scheduler-worker/pom.xml | 26 ----------- .../github/kfcfans/oms/worker/OhMyWorker.java | 4 +- .../background/ServerDiscoveryService.java | 11 +++-- .../persistence/TaskPersistenceService.java | 2 +- .../BroadcastTaskPreExecuteFinishedReq.java | 4 +- .../pojo/request/ProcessorMapTaskRequest.java | 4 +- .../request/ProcessorReportTaskStatusReq.java | 4 +- .../ProcessorTrackerStatusReportReq.java | 5 +- .../pojo/request/TaskTrackerStartTaskReq.java | 4 +- .../request/TaskTrackerStopInstanceReq.java | 4 +- .../src/main/resources/oms-worker.akka.conf | 7 ++- .../oms/processors/TestBasicProcessor.java | 4 +- .../processors/TestBroadcastProcessor.java | 8 ++-- .../processors/TestMapReduceProcessor.java | 8 ++-- oh-my-scheduler-worker/~/.DS_Store | Bin 0 -> 6148 bytes .../~/.oms/script/python/2.py | 1 + .../~/.oms/script/shell/1.sh | 1 + .../~/.oms/script/shell/18.sh | 17 +++++++ .../~/.oms/script/shell/277.sh | 1 + .../~/.oms/script/shell/2777.sh | 1 + oh-my-scheduler-worker/~/oms/.DS_Store | Bin 0 -> 6148 bytes oh-my-scheduler-worker/~/oms/script/.DS_Store | Bin 0 -> 6148 bytes .../~/oms/script/shell/.DS_Store | Bin 0 -> 6148 bytes .../~/oms/script/shell/18.sh | 0 others/logs/TestRecord.md | 44 +++++++++++++++++- 45 files changed, 191 insertions(+), 108 deletions(-) create mode 100644 .DS_Store create mode 100644 oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/OmsSerializable.java create mode 100644 oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/utils/JsonUtils.java create mode 100644 oh-my-scheduler-worker/~/.DS_Store create mode 100755 oh-my-scheduler-worker/~/.oms/script/python/2.py create mode 100755 oh-my-scheduler-worker/~/.oms/script/shell/1.sh create mode 100755 oh-my-scheduler-worker/~/.oms/script/shell/18.sh create mode 100755 oh-my-scheduler-worker/~/.oms/script/shell/277.sh create mode 100755 oh-my-scheduler-worker/~/.oms/script/shell/2777.sh create mode 100644 oh-my-scheduler-worker/~/oms/.DS_Store create mode 100644 oh-my-scheduler-worker/~/oms/script/.DS_Store create mode 100644 oh-my-scheduler-worker/~/oms/script/shell/.DS_Store create mode 100644 oh-my-scheduler-worker/~/oms/script/shell/18.sh diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0e8ca6315d440397051f12e65210025d5dd53113 GIT binary patch literal 6148 zcmeHK-EPw`6h7X{nie4{f!Ho{gTzItT3`$bA%(8Js00WR1Q&p|rm5D5B(9QlWt5`c z@D9Km@F+Y155fb$=O3nI9hwFbnvjoVf5-MY$H|vtJ0>F5p7<@I8WCA20!vj?$A}mg zWl2_a&v_t|F&>di-CoECUbtj!It&AbfwRVdSi5C^nIg;?7h|#YQ^!i>^X-fJ zNURU1jy1&-CG`53Sl|C9mN!kuUMTtc>W#x7&6>?`Y-P1{Zmn!tRjYcT`pO;gshjn) zN!sowFGTBcKO1>kf694ysQ0~R!Em}$yS&ZgtRKX~L^=ol5GF652eHqmZ9a+pRK{`D zfMr#z%1&)#HfwEe*6r4v8}qt7+uCZ@?OQi*&*v3u{c7u8Z#O!4J9{^O{|PS)VK@S$ zT-5jrK0`Sx?_yGb1Kcn^Le=A{!7u7PBWC@g+bnYJHuX}g9fnM~D$(j&GaE%UZz z8pArG2EAF1EE6wpU7;sfI`^qV4}lGM_{I24q*vYp&9fl-gIQt^Fk%=m3>XIT42b=~ zMiJ;}Tqu-V2P%050G7}#1-kfY5I(j>N8>^vMj%YN0+lP%R}7}y(Qj)zN8>`Fawn!Q zA5728^bLi{*%9BC=ENL@rZx;128s-&U2gQ*My|CE8BXw>V| literal 0 HcmV?d00001 diff --git a/oh-my-scheduler-client/pom.xml b/oh-my-scheduler-client/pom.xml index 13608555..36051002 100644 --- a/oh-my-scheduler-client/pom.xml +++ b/oh-my-scheduler-client/pom.xml @@ -16,7 +16,6 @@ 1.0.0-SNAPSHOT 5.6.1 - 1.2.68 @@ -26,12 +25,6 @@ oh-my-scheduler-common ${oms.common.version} - - - com.alibaba - fastjson - ${fastjson.version} - org.junit.jupiter diff --git a/oh-my-scheduler-client/src/main/java/com/github/kfcfans/oms/client/OhMyClient.java b/oh-my-scheduler-client/src/main/java/com/github/kfcfans/oms/client/OhMyClient.java index 15a07b55..c63fa41e 100644 --- a/oh-my-scheduler-client/src/main/java/com/github/kfcfans/oms/client/OhMyClient.java +++ b/oh-my-scheduler-client/src/main/java/com/github/kfcfans/oms/client/OhMyClient.java @@ -1,9 +1,9 @@ package com.github.kfcfans.oms.client; -import com.alibaba.fastjson.JSONObject; import com.github.kfcfans.common.OpenAPIConstant; import com.github.kfcfans.common.response.ResultDTO; import com.github.kfcfans.common.utils.HttpUtils; +import com.github.kfcfans.common.utils.JsonUtils; import lombok.extern.slf4j.Slf4j; import okhttp3.FormBody; import okhttp3.RequestBody; @@ -43,7 +43,7 @@ public class OhMyClient { String url = getUrl(OpenAPIConstant.ASSERT) + "?appName=" + appName; String result = HttpUtils.get(url); if (StringUtils.isNotEmpty(result)) { - ResultDTO resultDTO = JSONObject.parseObject(result, ResultDTO.class); + ResultDTO resultDTO = JsonUtils.parseObject(result, ResultDTO.class); if (resultDTO.isSuccess()) { appId = Long.parseLong(resultDTO.getData().toString()); }else { @@ -72,7 +72,7 @@ public class OhMyClient { .add("appId", appId.toString()) .build(); String post = HttpUtils.post(url, body); - return JSONObject.parseObject(post, ResultDTO.class); + return JsonUtils.parseObject(post, ResultDTO.class); } /** @@ -88,7 +88,7 @@ public class OhMyClient { .add("appId", appId.toString()) .build(); String post = HttpUtils.post(url, body); - return JSONObject.parseObject(post, ResultDTO.class); + return JsonUtils.parseObject(post, ResultDTO.class); } /** @@ -108,7 +108,7 @@ public class OhMyClient { builder.add("instanceParams", instanceParams); } String post = HttpUtils.post(url, builder.build()); - return JSONObject.parseObject(post, ResultDTO.class); + return JsonUtils.parseObject(post, ResultDTO.class); } public ResultDTO runJob(Long jobId) throws Exception { return runJob(jobId, null); @@ -128,7 +128,7 @@ public class OhMyClient { .add("appId", appId.toString()) .build(); String post = HttpUtils.post(url, body); - return JSONObject.parseObject(post, ResultDTO.class); + return JsonUtils.parseObject(post, ResultDTO.class); } /** @@ -143,6 +143,6 @@ public class OhMyClient { .add("instanceId", instanceId.toString()) .build(); String post = HttpUtils.post(url, body); - return JSONObject.parseObject(post, ResultDTO.class); + return JsonUtils.parseObject(post, ResultDTO.class); } } diff --git a/oh-my-scheduler-common/pom.xml b/oh-my-scheduler-common/pom.xml index b80f7089..7a165d10 100644 --- a/oh-my-scheduler-common/pom.xml +++ b/oh-my-scheduler-common/pom.xml @@ -18,6 +18,7 @@ 3.10 28.2-jre 4.4.1 + 2.6.4 @@ -48,6 +49,18 @@ okhttp ${okhttp.version} + + + + com.typesafe.akka + akka-remote_2.13 + ${akka.version} + + + com.typesafe.akka + akka-serialization-jackson_2.13 + ${akka.version} + \ No newline at end of file diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/OmsSerializable.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/OmsSerializable.java new file mode 100644 index 00000000..26a8b427 --- /dev/null +++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/OmsSerializable.java @@ -0,0 +1,12 @@ +package com.github.kfcfans.common; + +import java.io.Serializable; + +/** + * OMS 序列化接口 + * + * @author tjq + * @since 2020/4/16 + */ +public interface OmsSerializable extends Serializable { +} diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerQueryInstanceStatusReq.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerQueryInstanceStatusReq.java index 3c900192..06022a9b 100644 --- a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerQueryInstanceStatusReq.java +++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerQueryInstanceStatusReq.java @@ -1,11 +1,10 @@ package com.github.kfcfans.common.request; +import com.github.kfcfans.common.OmsSerializable; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.io.Serializable; - /** * 服务器查询实例运行状态,需要返回详细的运行数据 * @@ -15,6 +14,6 @@ import java.io.Serializable; @Data @NoArgsConstructor @AllArgsConstructor -public class ServerQueryInstanceStatusReq implements Serializable { +public class ServerQueryInstanceStatusReq implements OmsSerializable { private Long instanceId; } diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerScheduleJobReq.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerScheduleJobReq.java index 8eb92fdb..831d4201 100644 --- a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerScheduleJobReq.java +++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerScheduleJobReq.java @@ -1,8 +1,8 @@ package com.github.kfcfans.common.request; +import com.github.kfcfans.common.OmsSerializable; import lombok.Data; -import java.io.Serializable; import java.util.List; /** @@ -12,7 +12,7 @@ import java.util.List; * @since 2020/3/17 */ @Data -public class ServerScheduleJobReq implements Serializable { +public class ServerScheduleJobReq implements OmsSerializable { // 可用处理器地址,可能多值,逗号分隔 private List allWorkerAddress; diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerStopInstanceReq.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerStopInstanceReq.java index cc27ac19..161ddcbf 100644 --- a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerStopInstanceReq.java +++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/ServerStopInstanceReq.java @@ -1,10 +1,10 @@ package com.github.kfcfans.common.request; +import com.github.kfcfans.common.OmsSerializable; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.io.Serializable; /** * 服务器要求任务实例停止执行请求 @@ -15,6 +15,6 @@ import java.io.Serializable; @Data @NoArgsConstructor @AllArgsConstructor -public class ServerStopInstanceReq implements Serializable { +public class ServerStopInstanceReq implements OmsSerializable { private Long instanceId; } diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/TaskTrackerReportInstanceStatusReq.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/TaskTrackerReportInstanceStatusReq.java index 6babdbe3..8e07c676 100644 --- a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/TaskTrackerReportInstanceStatusReq.java +++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/TaskTrackerReportInstanceStatusReq.java @@ -1,8 +1,8 @@ package com.github.kfcfans.common.request; +import com.github.kfcfans.common.OmsSerializable; import lombok.Data; -import java.io.Serializable; /** * TaskTracker 将状态上报给服务器 @@ -11,7 +11,7 @@ import java.io.Serializable; * @since 2020/3/17 */ @Data -public class TaskTrackerReportInstanceStatusReq implements Serializable { +public class TaskTrackerReportInstanceStatusReq implements OmsSerializable { private Long jobId; private Long instanceId; diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/WorkerHeartbeat.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/WorkerHeartbeat.java index 9647bc8e..a4a0d37e 100644 --- a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/WorkerHeartbeat.java +++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/request/WorkerHeartbeat.java @@ -1,9 +1,9 @@ package com.github.kfcfans.common.request; +import com.github.kfcfans.common.OmsSerializable; import com.github.kfcfans.common.model.SystemMetrics; import lombok.Data; -import java.io.Serializable; /** * Worker 上报健康信息(worker定时发送的heartbeat) @@ -12,7 +12,7 @@ import java.io.Serializable; * @since 2020/3/25 */ @Data -public class WorkerHeartbeat implements Serializable { +public class WorkerHeartbeat implements OmsSerializable { // 本机地址 -> IP:port private String workerAddress; diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/response/AskResponse.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/response/AskResponse.java index 786d6361..a08667fc 100644 --- a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/response/AskResponse.java +++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/response/AskResponse.java @@ -1,10 +1,10 @@ package com.github.kfcfans.common.response; +import com.github.kfcfans.common.OmsSerializable; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.io.Serializable; /** * Pattens.ask 的响应 @@ -15,7 +15,7 @@ import java.io.Serializable; @Data @NoArgsConstructor @AllArgsConstructor -public class AskResponse implements Serializable { +public class AskResponse implements OmsSerializable { private boolean success; private Object extra; diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/response/ResultDTO.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/response/ResultDTO.java index e6b5c200..27ea0688 100644 --- a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/response/ResultDTO.java +++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/response/ResultDTO.java @@ -1,5 +1,6 @@ package com.github.kfcfans.common.response; +import com.github.kfcfans.common.OmsSerializable; import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -14,7 +15,7 @@ import org.apache.commons.lang3.exception.ExceptionUtils; @Getter @Setter @ToString -public class ResultDTO { +public class ResultDTO implements OmsSerializable { private boolean success; // 数据(success为 true 时存在) diff --git a/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/utils/JsonUtils.java b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/utils/JsonUtils.java new file mode 100644 index 00000000..ff7ca3b2 --- /dev/null +++ b/oh-my-scheduler-common/src/main/java/com/github/kfcfans/common/utils/JsonUtils.java @@ -0,0 +1,27 @@ +package com.github.kfcfans.common.utils; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * JSON工具类 + * + * @author tjq + * @since 2020/4/16 + */ +public class JsonUtils { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + public static String toJSONString(Object obj) { + try { + return objectMapper.writeValueAsString(obj); + }catch (Exception ignore) { + } + return null; + } + + public static T parseObject(String json, Class clz) throws JsonProcessingException { + return objectMapper.readValue(json, clz); + } +} diff --git a/oh-my-scheduler-server/pom.xml b/oh-my-scheduler-server/pom.xml index ccf5e0ad..31d3354e 100644 --- a/oh-my-scheduler-server/pom.xml +++ b/oh-my-scheduler-server/pom.xml @@ -15,7 +15,6 @@ 2.9.2 - 2.6.4 2.2.6.RELEASE 1.0.0-SNAPSHOT 3.4.2 @@ -46,13 +45,6 @@ ${mysql.version} - - - com.typesafe.akka - akka-remote_2.13 - ${akka.version} - - org.springframework.boot @@ -84,7 +76,6 @@ ${swagger.version} - diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/requests/FriendQueryWorkerClusterStatusReq.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/requests/FriendQueryWorkerClusterStatusReq.java index 2ac25c5a..335a8042 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/requests/FriendQueryWorkerClusterStatusReq.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/requests/FriendQueryWorkerClusterStatusReq.java @@ -1,10 +1,10 @@ package com.github.kfcfans.oms.server.akka.requests; +import com.github.kfcfans.common.OmsSerializable; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.io.Serializable; /** * 查询 Worker 集群状态 @@ -15,6 +15,6 @@ import java.io.Serializable; @Data @NoArgsConstructor @AllArgsConstructor -public class FriendQueryWorkerClusterStatusReq implements Serializable { +public class FriendQueryWorkerClusterStatusReq implements OmsSerializable { private Long appId; } diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/requests/Ping.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/requests/Ping.java index caad7d57..01048cf4 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/requests/Ping.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/akka/requests/Ping.java @@ -1,8 +1,8 @@ package com.github.kfcfans.oms.server.akka.requests; +import com.github.kfcfans.common.OmsSerializable; import lombok.Data; -import java.io.Serializable; /** * 检测目标机器是否存活 @@ -11,6 +11,6 @@ import java.io.Serializable; * @since 2020/4/5 */ @Data -public class Ping implements Serializable { +public class Ping implements OmsSerializable { private long currentTime; } diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/repository/InstanceLogRepository.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/repository/InstanceLogRepository.java index 1e08fb8c..ecee1bbc 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/repository/InstanceLogRepository.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/persistence/repository/InstanceLogRepository.java @@ -46,9 +46,9 @@ public interface InstanceLogRepository extends JpaRepository findByJobIdInAndStatusAndExpectedTriggerTimeLessThan(List jobIds, int status, long time); - List findByJobIdInAndStatusAndActualTriggerTimeLessThan(List jobIds, int status, long time); - List findByJobIdInAndStatusAndGmtModifiedBefore(List jobIds, int status, Date time); + List findByAppIdInAndStatusAndExpectedTriggerTimeLessThan(List jobIds, int status, long time); + List findByAppIdInAndStatusAndActualTriggerTimeLessThan(List jobIds, int status, long time); + List findByAppIdInAndStatusAndGmtModifiedBefore(List jobIds, int status, Date time); InstanceLogDO findByInstanceId(long instanceId); diff --git a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/timing/InstanceStatusCheckService.java b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/timing/InstanceStatusCheckService.java index c93ddf8b..7c0c8b0b 100644 --- a/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/timing/InstanceStatusCheckService.java +++ b/oh-my-scheduler-server/src/main/java/com/github/kfcfans/oms/server/service/timing/InstanceStatusCheckService.java @@ -73,7 +73,7 @@ public class InstanceStatusCheckService { // 1. 检查等待 WAITING_DISPATCH 状态的任务 long threshold = System.currentTimeMillis() - DISPATCH_TIMEOUT_MS; - List waitingDispatchInstances = instanceLogRepository.findByJobIdInAndStatusAndExpectedTriggerTimeLessThan(partAppIds, InstanceStatus.WAITING_DISPATCH.getV(), threshold); + List waitingDispatchInstances = instanceLogRepository.findByAppIdInAndStatusAndExpectedTriggerTimeLessThan(partAppIds, InstanceStatus.WAITING_DISPATCH.getV(), threshold); if (!CollectionUtils.isEmpty(waitingDispatchInstances)) { log.warn("[InstanceStatusCheckService] instances({}) is not triggered as expected.", waitingDispatchInstances); waitingDispatchInstances.forEach(instance -> { @@ -85,7 +85,7 @@ public class InstanceStatusCheckService { // 2. 检查 WAITING_WORKER_RECEIVE 状态的任务 threshold = System.currentTimeMillis() - RECEIVE_TIMEOUT_MS; - List waitingWorkerReceiveInstances = instanceLogRepository.findByJobIdInAndStatusAndActualTriggerTimeLessThan(partAppIds, InstanceStatus.WAITING_WORKER_RECEIVE.getV(), threshold); + List waitingWorkerReceiveInstances = instanceLogRepository.findByAppIdInAndStatusAndActualTriggerTimeLessThan(partAppIds, InstanceStatus.WAITING_WORKER_RECEIVE.getV(), threshold); if (!CollectionUtils.isEmpty(waitingWorkerReceiveInstances)) { log.warn("[InstanceStatusCheckService] instances({}) did n’t receive any reply from worker.", waitingWorkerReceiveInstances); waitingWorkerReceiveInstances.forEach(instance -> { @@ -97,7 +97,7 @@ public class InstanceStatusCheckService { // 3. 检查 RUNNING 状态的任务(一定时间没收到 TaskTracker 的状态报告,视为失败) threshold = System.currentTimeMillis() - RUNNING_TIMEOUT_MS; - List failedInstances = instanceLogRepository.findByJobIdInAndStatusAndGmtModifiedBefore(partAppIds, InstanceStatus.RUNNING.getV(), new Date(threshold)); + List failedInstances = instanceLogRepository.findByAppIdInAndStatusAndGmtModifiedBefore(partAppIds, InstanceStatus.RUNNING.getV(), new Date(threshold)); if (!CollectionUtils.isEmpty(failedInstances)) { log.warn("[InstanceStatusCheckService] instances({}) has not received status report for a long time.", failedInstances); failedInstances.forEach(instance -> { diff --git a/oh-my-scheduler-server/src/main/resources/application.properties b/oh-my-scheduler-server/src/main/resources/application.properties index b31a1a54..c9445500 100644 --- a/oh-my-scheduler-server/src/main/resources/application.properties +++ b/oh-my-scheduler-server/src/main/resources/application.properties @@ -3,7 +3,8 @@ server.port=7700 # db config spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://remotehost:3391/oms?charset=utf8mb4&useSSL=false +# JDBC配置不支持utf8mb4,需要更改my.conf +spring.datasource.url=jdbc:mysql://remotehost:3391/oms?useUnicode=true&characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=No1Bug2Please3! # Hikari 数据源专用配置 diff --git a/oh-my-scheduler-server/src/main/resources/oms-server.akka.conf b/oh-my-scheduler-server/src/main/resources/oms-server.akka.conf index c6657860..d0d2da66 100644 --- a/oh-my-scheduler-server/src/main/resources/oms-server.akka.conf +++ b/oh-my-scheduler-server/src/main/resources/oms-server.akka.conf @@ -3,7 +3,11 @@ akka { # cluster is better(recommend by official document), but I prefer remote provider = remote # TODO : 临时使用 Java 序列化,开发完成后切换到 protocol-buffers - allow-java-serialization = on + allow-java-serialization = off + + serialization-bindings { + "com.github.kfcfans.common.OmsSerializable" = jackson-cbor + } } remote { artery { diff --git a/oh-my-scheduler-worker/pom.xml b/oh-my-scheduler-worker/pom.xml index e5387236..0b612350 100644 --- a/oh-my-scheduler-worker/pom.xml +++ b/oh-my-scheduler-worker/pom.xml @@ -15,14 +15,11 @@ 5.2.4.RELEASE - 2.6.4 1.0.0-SNAPSHOT 1.4.200 3.4.2 5.6.1 5.0.0-RC5 - 1.2.68 - 4.4.1 2.6 @@ -36,13 +33,6 @@ - - - com.typesafe.akka - akka-remote_2.13 - ${akka.version} - - com.github.kfcfans @@ -78,20 +68,6 @@ test - - - com.squareup.okhttp3 - okhttp - ${okhttp.version} - - - - - com.alibaba - fastjson - ${fastjson.version} - - commons-io @@ -99,8 +75,6 @@ ${commons.io.version} - - ch.qos.logback diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/OhMyWorker.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/OhMyWorker.java index 0c3464dd..ccafb82f 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/OhMyWorker.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/OhMyWorker.java @@ -2,9 +2,9 @@ package com.github.kfcfans.oms.worker; import akka.actor.ActorSystem; import akka.actor.Props; -import com.alibaba.fastjson.JSONObject; import com.github.kfcfans.common.response.ResultDTO; import com.github.kfcfans.common.utils.CommonUtils; +import com.github.kfcfans.common.utils.JsonUtils; import com.github.kfcfans.oms.worker.actors.ProcessorTrackerActor; import com.github.kfcfans.oms.worker.actors.TaskTrackerActor; import com.github.kfcfans.oms.worker.background.ServerDiscoveryService; @@ -131,7 +131,7 @@ public class OhMyWorker implements ApplicationContextAware, InitializingBean { String realUrl = String.format(url, server, appName); try { String resultDTOStr = CommonUtils.executeWithRetry0(() -> HttpUtils.get(realUrl)); - ResultDTO resultDTO = JSONObject.parseObject(resultDTOStr, ResultDTO.class); + ResultDTO resultDTO = JsonUtils.parseObject(resultDTOStr, ResultDTO.class); if (resultDTO.isSuccess()) { Long appId = Long.valueOf(resultDTO.getData().toString()); log.info("[OhMyWorker] assert appName({}) succeed, the appId for this application is {}.", appName, appId); diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/background/ServerDiscoveryService.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/background/ServerDiscoveryService.java index 5bbc1a8c..bf721768 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/background/ServerDiscoveryService.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/background/ServerDiscoveryService.java @@ -1,8 +1,8 @@ package com.github.kfcfans.oms.worker.background; -import com.alibaba.fastjson.JSONObject; import com.github.kfcfans.common.response.ResultDTO; import com.github.kfcfans.common.utils.CommonUtils; +import com.github.kfcfans.common.utils.JsonUtils; import com.github.kfcfans.oms.worker.OhMyWorker; import com.github.kfcfans.common.utils.HttpUtils; import com.github.kfcfans.oms.worker.core.tracker.task.TaskTracker; @@ -95,9 +95,12 @@ public class ServerDiscoveryService { }catch (Exception ignore) { } if (!StringUtils.isEmpty(result)) { - ResultDTO resultDTO = JSONObject.parseObject(result, ResultDTO.class); - if (resultDTO.isSuccess()) { - return resultDTO.getData().toString(); + try { + ResultDTO resultDTO = JsonUtils.parseObject(result, ResultDTO.class); + if (resultDTO.isSuccess()) { + return resultDTO.getData().toString(); + } + }catch (Exception ignore) { } } return null; diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/TaskPersistenceService.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/TaskPersistenceService.java index c55130f8..09b56ad9 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/TaskPersistenceService.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/persistence/TaskPersistenceService.java @@ -27,7 +27,7 @@ public class TaskPersistenceService { // 默认重试参数 private static final int RETRY_TIMES = 3; - private static final long RETRY_INTERVAL_MS = 100; + private static final long RETRY_INTERVAL_MS = 200; private static volatile boolean initialized = false; public static TaskPersistenceService INSTANCE = new TaskPersistenceService(); diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/BroadcastTaskPreExecuteFinishedReq.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/BroadcastTaskPreExecuteFinishedReq.java index 8c4d8b21..0be1ce92 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/BroadcastTaskPreExecuteFinishedReq.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/BroadcastTaskPreExecuteFinishedReq.java @@ -1,8 +1,8 @@ package com.github.kfcfans.oms.worker.pojo.request; +import com.github.kfcfans.common.OmsSerializable; import lombok.Data; -import java.io.Serializable; /** * 广播任务 preExecute 结束信息 @@ -11,7 +11,7 @@ import java.io.Serializable; * @since 2020/3/23 */ @Data -public class BroadcastTaskPreExecuteFinishedReq implements Serializable { +public class BroadcastTaskPreExecuteFinishedReq implements OmsSerializable { private Long instanceId; private Long subInstanceId; diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorMapTaskRequest.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorMapTaskRequest.java index 317eda23..47556b15 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorMapTaskRequest.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorMapTaskRequest.java @@ -1,5 +1,6 @@ package com.github.kfcfans.oms.worker.pojo.request; +import com.github.kfcfans.common.OmsSerializable; import com.github.kfcfans.oms.worker.common.ThreadLocalStore; import com.github.kfcfans.oms.worker.common.utils.SerializerUtils; import com.github.kfcfans.oms.worker.persistence.TaskDO; @@ -8,7 +9,6 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; -import java.io.Serializable; import java.util.List; /** @@ -19,7 +19,7 @@ import java.util.List; */ @Getter @NoArgsConstructor -public class ProcessorMapTaskRequest implements Serializable { +public class ProcessorMapTaskRequest implements OmsSerializable { private Long instanceId; private Long subInstanceId; diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorReportTaskStatusReq.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorReportTaskStatusReq.java index 5f000447..71bc3f2e 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorReportTaskStatusReq.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorReportTaskStatusReq.java @@ -1,10 +1,10 @@ package com.github.kfcfans.oms.worker.pojo.request; +import com.github.kfcfans.common.OmsSerializable; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.io.Serializable; /** * worker 上报 task 执行情况 @@ -15,7 +15,7 @@ import java.io.Serializable; @Data @NoArgsConstructor @AllArgsConstructor -public class ProcessorReportTaskStatusReq implements Serializable { +public class ProcessorReportTaskStatusReq implements OmsSerializable { private Long instanceId; private String taskId; diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorTrackerStatusReportReq.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorTrackerStatusReportReq.java index f6041332..06b7f5fc 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorTrackerStatusReportReq.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/ProcessorTrackerStatusReportReq.java @@ -1,11 +1,10 @@ package com.github.kfcfans.oms.worker.pojo.request; -import com.github.kfcfans.common.utils.NetUtils; +import com.github.kfcfans.common.OmsSerializable; import com.github.kfcfans.oms.worker.OhMyWorker; import lombok.Data; import lombok.NoArgsConstructor; -import java.io.Serializable; /** * ProcessorTracker 定时向 TaskTracker 上报健康状态 @@ -15,7 +14,7 @@ import java.io.Serializable; */ @Data @NoArgsConstructor -public class ProcessorTrackerStatusReportReq implements Serializable { +public class ProcessorTrackerStatusReportReq implements OmsSerializable { private Long instanceId; diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/TaskTrackerStartTaskReq.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/TaskTrackerStartTaskReq.java index e9ba5f63..33330211 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/TaskTrackerStartTaskReq.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/TaskTrackerStartTaskReq.java @@ -1,5 +1,6 @@ package com.github.kfcfans.oms.worker.pojo.request; +import com.github.kfcfans.common.OmsSerializable; import com.github.kfcfans.oms.worker.OhMyWorker; import com.github.kfcfans.oms.worker.persistence.TaskDO; import com.github.kfcfans.oms.worker.pojo.model.InstanceInfo; @@ -7,7 +8,6 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import java.io.Serializable; /** * TaskTracker 派发 task 进行执行 @@ -18,7 +18,7 @@ import java.io.Serializable; @Getter @Setter @NoArgsConstructor -public class TaskTrackerStartTaskReq implements Serializable { +public class TaskTrackerStartTaskReq implements OmsSerializable { // TaskTracker 地址 private String taskTrackerAddress; diff --git a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/TaskTrackerStopInstanceReq.java b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/TaskTrackerStopInstanceReq.java index f60e1c5c..71da8327 100644 --- a/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/TaskTrackerStopInstanceReq.java +++ b/oh-my-scheduler-worker/src/main/java/com/github/kfcfans/oms/worker/pojo/request/TaskTrackerStopInstanceReq.java @@ -1,8 +1,8 @@ package com.github.kfcfans.oms.worker.pojo.request; +import com.github.kfcfans.common.OmsSerializable; import lombok.Data; -import java.io.Serializable; /** * TaskTracker 停止 ProcessorTracker,释放相关资源 @@ -12,7 +12,7 @@ import java.io.Serializable; * @since 2020/3/25 */ @Data -public class TaskTrackerStopInstanceReq implements Serializable { +public class TaskTrackerStopInstanceReq implements OmsSerializable { private Long instanceId; // 保留字段,暂时没用 diff --git a/oh-my-scheduler-worker/src/main/resources/oms-worker.akka.conf b/oh-my-scheduler-worker/src/main/resources/oms-worker.akka.conf index d77550a5..918b06f7 100644 --- a/oh-my-scheduler-worker/src/main/resources/oms-worker.akka.conf +++ b/oh-my-scheduler-worker/src/main/resources/oms-worker.akka.conf @@ -2,8 +2,11 @@ akka { actor { # cluster is better(recommend by official document), but I prefer remote provider = remote - # TODO : 临时使用 Java 序列化,开发完成后切换到 protocol-buffers - allow-java-serialization = on + allow-java-serialization = off + + serialization-bindings { + "com.github.kfcfans.common.OmsSerializable" = jackson-cbor + } } remote { artery { diff --git a/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestBasicProcessor.java b/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestBasicProcessor.java index b1996a04..c68a2b4b 100644 --- a/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestBasicProcessor.java +++ b/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestBasicProcessor.java @@ -1,6 +1,6 @@ package com.github.kfcfans.oms.processors; -import com.alibaba.fastjson.JSONObject; +import com.github.kfcfans.common.utils.JsonUtils; import com.github.kfcfans.oms.worker.core.processor.ProcessResult; import com.github.kfcfans.oms.worker.core.processor.TaskContext; import com.github.kfcfans.oms.worker.core.processor.sdk.BasicProcessor; @@ -16,7 +16,7 @@ public class TestBasicProcessor implements BasicProcessor { @Override public ProcessResult process(TaskContext context) throws Exception { System.out.println("======== BasicProcessor#process ========"); - System.out.println("TaskContext: " + JSONObject.toJSONString(context) + ";time = " + System.currentTimeMillis()); + System.out.println("TaskContext: " + JsonUtils.toJSONString(context) + ";time = " + System.currentTimeMillis()); return new ProcessResult(true, System.currentTimeMillis() + "success"); } diff --git a/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestBroadcastProcessor.java b/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestBroadcastProcessor.java index 35427c7e..e74597f6 100644 --- a/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestBroadcastProcessor.java +++ b/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestBroadcastProcessor.java @@ -1,6 +1,6 @@ package com.github.kfcfans.oms.processors; -import com.alibaba.fastjson.JSONObject; +import com.github.kfcfans.common.utils.JsonUtils; import com.github.kfcfans.oms.worker.core.processor.ProcessResult; import com.github.kfcfans.oms.worker.core.processor.TaskContext; import com.github.kfcfans.oms.worker.core.processor.sdk.BroadcastProcessor; @@ -17,14 +17,14 @@ public class TestBroadcastProcessor implements BroadcastProcessor { @Override public ProcessResult preProcess(TaskContext taskContext) throws Exception { System.out.println("=============== TestBroadcastProcessor#preProcess ==============="); - System.out.println("taskContext:" + JSONObject.toJSONString(taskContext)); + System.out.println("taskContext:" + JsonUtils.toJSONString(taskContext)); return new ProcessResult(true, "preProcess success"); } @Override public ProcessResult postProcess(TaskContext taskContext, Map taskId2Result) throws Exception { System.out.println("=============== TestBroadcastProcessor#postProcess ==============="); - System.out.println("taskContext:" + JSONObject.toJSONString(taskContext)); + System.out.println("taskContext:" + JsonUtils.toJSONString(taskContext)); System.out.println("taskId2Result:" + taskId2Result); return new ProcessResult(true, "postProcess success"); } @@ -32,7 +32,7 @@ public class TestBroadcastProcessor implements BroadcastProcessor { @Override public ProcessResult process(TaskContext context) throws Exception { System.out.println("=============== TestBroadcastProcessor#process ==============="); - System.out.println("taskContext:" + JSONObject.toJSONString(context)); + System.out.println("taskContext:" + JsonUtils.toJSONString(context)); return new ProcessResult(true, "processSuccess"); } } diff --git a/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestMapReduceProcessor.java b/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestMapReduceProcessor.java index 2649e130..48e66450 100644 --- a/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestMapReduceProcessor.java +++ b/oh-my-scheduler-worker/src/test/java/com/github/kfcfans/oms/processors/TestMapReduceProcessor.java @@ -1,6 +1,6 @@ package com.github.kfcfans.oms.processors; -import com.alibaba.fastjson.JSONObject; +import com.github.kfcfans.common.utils.JsonUtils; import com.github.kfcfans.oms.worker.core.processor.ProcessResult; import com.github.kfcfans.oms.worker.core.processor.TaskContext; import com.github.kfcfans.oms.worker.core.processor.sdk.MapReduceProcessor; @@ -24,7 +24,7 @@ public class TestMapReduceProcessor extends MapReduceProcessor { @Override public ProcessResult reduce(TaskContext taskContext, Map taskId2Result) { System.out.println("============== TestMapReduceProcessor#reduce =============="); - System.out.println("taskContext:" + JSONObject.toJSONString(taskContext)); + System.out.println("taskContext:" + JsonUtils.toJSONString(taskContext)); System.out.println("taskId2Result:" + taskId2Result); return new ProcessResult(true, "REDUCE_SUCCESS"); } @@ -33,7 +33,7 @@ public class TestMapReduceProcessor extends MapReduceProcessor { public ProcessResult process(TaskContext context) throws Exception { System.out.println("============== TestMapReduceProcessor#process =============="); System.out.println("isRootTask:" + isRootTask()); - System.out.println("taskContext:" + JSONObject.toJSONString(context)); + System.out.println("taskContext:" + JsonUtils.toJSONString(context)); if (isRootTask()) { System.out.println("==== MAP ===="); @@ -50,7 +50,7 @@ public class TestMapReduceProcessor extends MapReduceProcessor { return new ProcessResult(true, "MAP_SUCCESS"); }else { System.out.println("==== NORMAL_PROCESS ===="); - System.out.println("subTask: " + JSONObject.toJSONString(context.getSubTask())); + System.out.println("subTask: " + JsonUtils.toJSONString(context.getSubTask())); Thread.sleep(1000); if (context.getCurrentRetryTimes() == 0) { return new ProcessResult(false, "FIRST_FAILED"); diff --git a/oh-my-scheduler-worker/~/.DS_Store b/oh-my-scheduler-worker/~/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5a217eb2323470eaf17c0feaf4a8407631ac4bc1 GIT binary patch literal 6148 zcmeHK!AiqG5Z!I7ZYyFBf<5LUc<7;3tAYrj)v3EQC;?h`AyR-w4j5evuq`@_-W8(3e4^ z19-yaSpEY8xOaJ>MNcH{=+pk~z|88K5mN|71;gZqcKIc^iNYkU)m~*TUznMlQ>vs& z3#BvfS`WR{PX|fU@1Nk)fuCLnWFKlBeb|0*6n2N_<)u9xr+yfB`zAT;bRp#QIE*`b z*wll#lbCfpJE2rj70=6+(Wu^NRGs?v+PLbBwzg_jXJdVHJT9u`mHKY`qIY*cdKf=G z*`1K^ks4VfoWL^}RNk%Ek0TvlfoBpuiDG01m;q*BY8apcPR&nEMO+9ozzqBr19(0- zpolJEX3-oSFqjqqumEl&V4I(RKnERwE@5U7JRs7h0@_qbErz7tLE3bfcPT!zXw!u> zZ-#Z~&5}A4Nv(%;Ot_G)MIM;}X5cde*!zK$@&4ccx&JpoJTL>yz;rSo3oWnJgxctC y{Zb{~wGQY7C + + + + + + + oms-console + + + +
+ + + diff --git a/oh-my-scheduler-worker/~/.oms/script/shell/277.sh b/oh-my-scheduler-worker/~/.oms/script/shell/277.sh new file mode 100755 index 00000000..c6d4c4d9 --- /dev/null +++ b/oh-my-scheduler-worker/~/.oms/script/shell/277.sh @@ -0,0 +1 @@ +ls -a \ No newline at end of file diff --git a/oh-my-scheduler-worker/~/.oms/script/shell/2777.sh b/oh-my-scheduler-worker/~/.oms/script/shell/2777.sh new file mode 100755 index 00000000..013c184c --- /dev/null +++ b/oh-my-scheduler-worker/~/.oms/script/shell/2777.sh @@ -0,0 +1 @@ +pwd \ No newline at end of file diff --git a/oh-my-scheduler-worker/~/oms/.DS_Store b/oh-my-scheduler-worker/~/oms/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..43f8d602404cbf40f3f6141d69ceb12b9f5e40cf GIT binary patch literal 6148 zcmeHK%}OId5U!3y04Sl11 zf_uqDMug3aY=F>Z+dZuZQj_01%Bqrw&j70EtRiC}H!8P(SI66r5)cQJ67$ zkR8SPDvWhF6U~m#$N=r#0;F&SeTZOs|LCJQK;8If#7uuGHXNosx7UBdUL2)at@c+G z=8E$Ri&B0Mx_y%z zb-EaGaTX;VJ#6Sf(n-xYzU`2*BulNz+GteY*{Q1f{^q!9>(`lta&9ZV`J>giS@Xslt^Q!lt8N zxj4^ZZqcTLaK(pkZx*gX5$5eUzB1t;Jd4~i1I)lQ162E=ROtRce7pWPLEJC{%)s|# zKopyPvw>@Kck9e5>8@3%ZB!D9%Pqd7pkc0JjHRo14b=$x6&Z-0!`vczQ20l{(7+8d I@SzO+2X`M{nE(I) literal 0 HcmV?d00001 diff --git a/oh-my-scheduler-worker/~/oms/script/.DS_Store b/oh-my-scheduler-worker/~/oms/script/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..908022ca2c7cdb7192f39bc3bd5bf27e8aef2c61 GIT binary patch literal 6148 zcmeHK%}N6?5Kh{vX+`Wou*X~k4?VQjKM-N5_25ld(Su6ewZ$&18|iK>S}Xe+`bIv1 zkE1h5DwXO{u`&abZ+0@1-Fykj4r7ehd#x&CMaGx_Ma<-(`9iQCbwV=MlLh2@jPM{- zmwu@HiCA*{O$Ko7W?0NRtj$6;zJ9nRc0gC(wCK+ti}d^Pja}&%|0WFLq*8h1nQU%m zc20?DXTfT)!R0mpYtr#~`)D05R~H0j&K%ig^F;e_#LWAZmyKV&H!=z;g|^ zQHQzNyLDogc-KnM3s4k{OAUUcfT6Eqh{db81gZu65)DAdVrmdPAoL@kX`qG}_*Dkp E0mk`UrvLx| literal 0 HcmV?d00001 diff --git a/oh-my-scheduler-worker/~/oms/script/shell/.DS_Store b/oh-my-scheduler-worker/~/oms/script/shell/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fe8f87b4160e1a242766a94c61323d19d57c8839 GIT binary patch literal 6148 zcmeHKu}T9$5S`Ho0h^R5x3m({2{ucJg>`-)L<@^R3bDV+@AA*|y_rEcjw>u|!W)=* zyL0n)bFa9`n3-=sUN>edGh4!m_Q^0cKBrIYsxl6Q9Y-100 zZ|@^Mf6^oT?mKMm0Oh5C6p#W^Knh5KKPkZ83tQeMDoOz91@dm9yjBhy4h<&@wgrN7UkwW zQBev=fw2PDxm~gUKf!0_|1n8BDIf(dN&#Q&_PZ@!se0?=<=AT*`~YXo7o3K5P!OUW k1EU>d!*;xmqO5CN<9RO}5`&I>(1H3hKwV@~;J+340r|%oCIA2c literal 0 HcmV?d00001 diff --git a/oh-my-scheduler-worker/~/oms/script/shell/18.sh b/oh-my-scheduler-worker/~/oms/script/shell/18.sh new file mode 100644 index 00000000..e69de29b diff --git a/others/logs/TestRecord.md b/others/logs/TestRecord.md index 3b2d800e..9d5e3050 100644 --- a/others/logs/TestRecord.md +++ b/others/logs/TestRecord.md @@ -48,4 +48,46 @@ java.lang.RuntimeException: create root task failed. #### SystemMetric算分问题 问题:java.lang.management.OperatingSystemMXBean#getSystemLoadAverage 不一定能获取CPU当前负载,可能返回负数代表不可用... -解决方案:印度Windows上getSystemLoadAverage()固定返回-1...太坑了...先做个保护性判断继续测试吧... \ No newline at end of file +解决方案:印度Windows上getSystemLoadAverage()固定返回-1...太坑了...先做个保护性判断继续测试吧... + +#### 未知的数组越界问题(可能是数据库性能问题) +秒级Broadcast任务在第四次执行时,当Processor完成执行上报状态时,TaskTracker报错,错误的本质原因是无法从数据库中找到这个task对应的记录... +时间表达式:FIX_DELAY,对应的TaskTracker为FrequentTaskTracker + +异常堆栈 +```text +2020-04-16 18:05:09 ERROR - [TaskPersistenceService] getTaskStatus failed, instanceId=1586857062542,taskId=4. +java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 + at java.util.LinkedList.checkElementIndex(LinkedList.java:555) + at java.util.LinkedList.get(LinkedList.java:476) + at com.github.kfcfans.oms.worker.persistence.TaskPersistenceService.lambda$getTaskStatus$10(TaskPersistenceService.java:214) + at com.github.kfcfans.common.utils.CommonUtils.executeWithRetry(CommonUtils.java:37) + at com.github.kfcfans.oms.worker.persistence.TaskPersistenceService.execute(TaskPersistenceService.java:310) + at com.github.kfcfans.oms.worker.persistence.TaskPersistenceService.getTaskStatus(TaskPersistenceService.java:212) + at com.github.kfcfans.oms.worker.core.tracker.task.TaskTracker.updateTaskStatus(TaskTracker.java:107) + at com.github.kfcfans.oms.worker.core.tracker.task.TaskTracker.broadcast(TaskTracker.java:214) + at com.github.kfcfans.oms.worker.actors.TaskTrackerActor.onReceiveBroadcastTaskPreExecuteFinishedReq(TaskTrackerActor.java:106) + at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:24) + at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala:20) + at scala.PartialFunction.applyOrElse(PartialFunction.scala:187) + at scala.PartialFunction.applyOrElse$(PartialFunction.scala:186) + at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:20) + at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:241) + at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:242) + at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:242) + at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:242) + at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala:242) + at akka.actor.Actor.aroundReceive(Actor.scala:534) + at akka.actor.Actor.aroundReceive$(Actor.scala:532) + at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:220) + at akka.actor.ActorCell.receiveMessage(ActorCell.scala:573) + at akka.actor.ActorCell.invoke(ActorCell.scala:543) + at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:269) + at akka.dispatch.Mailbox.run(Mailbox.scala:230) + at akka.dispatch.Mailbox.exec(Mailbox.scala:242) + at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) + at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) + at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) + at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) +2020-04-16 18:05:09 WARN - [TaskTracker-1586857062542] query TaskStatus from DB failed when try to update new TaskStatus(taskId=4,newStatus=6). +``` \ No newline at end of file