瀏覽代碼

feat: remove all spring dependencies in powerjob-worker

tjq 2 年之前
父節點
當前提交
3892c38785

+ 11 - 9
powerjob-worker/src/main/java/tech/powerjob/worker/core/processor/runnable/HeavyProcessorRunnable.java

@@ -1,11 +1,15 @@
 package tech.powerjob.worker.core.processor.runnable;
 
+import com.google.common.base.Stopwatch;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import tech.powerjob.common.enums.ExecuteType;
-import tech.powerjob.worker.common.WorkerRuntime;
+import tech.powerjob.common.serialize.SerializerUtils;
 import tech.powerjob.worker.common.ThreadLocalStore;
+import tech.powerjob.worker.common.WorkerRuntime;
 import tech.powerjob.worker.common.constants.TaskConstant;
 import tech.powerjob.worker.common.constants.TaskStatus;
-import tech.powerjob.common.serialize.SerializerUtils;
 import tech.powerjob.worker.common.utils.TransportUtils;
 import tech.powerjob.worker.common.utils.WorkflowContextUtils;
 import tech.powerjob.worker.core.processor.ProcessResult;
@@ -20,11 +24,6 @@ import tech.powerjob.worker.log.OmsLogger;
 import tech.powerjob.worker.persistence.TaskDO;
 import tech.powerjob.worker.pojo.model.InstanceInfo;
 import tech.powerjob.worker.pojo.request.ProcessorReportTaskStatusReq;
-import com.google.common.base.Stopwatch;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.apache.commons.lang3.StringUtils;
 
 import java.util.Collections;
 import java.util.List;
@@ -105,8 +104,11 @@ public class HeavyProcessorRunnable implements Runnable {
 
     private TaskContext constructTaskContext() {
         TaskContext taskContext = new TaskContext();
-        BeanUtils.copyProperties(task, taskContext);
         taskContext.setJobId(instanceInfo.getJobId());
+        taskContext.setInstanceId(task.getInstanceId());
+        taskContext.setSubInstanceId(task.getSubInstanceId());
+        taskContext.setTaskId(task.getTaskId());
+        taskContext.setTaskName(task.getTaskName());
         taskContext.setMaxRetryTimes(instanceInfo.getTaskRetryNum());
         taskContext.setCurrentRetryTimes(task.getFailedCnt());
         taskContext.setJobParams(instanceInfo.getJobParams());
@@ -120,7 +122,7 @@ public class HeavyProcessorRunnable implements Runnable {
     }
 
     private WorkflowContext constructWorkflowContext() {
-        return new WorkflowContext(instanceInfo.getWfInstanceId(),instanceInfo.getInstanceParams());
+        return new WorkflowContext(instanceInfo.getWfInstanceId(), instanceInfo.getInstanceParams());
     }
 
     /**

+ 20 - 3
powerjob-worker/src/main/java/tech/powerjob/worker/core/tracker/task/TaskTracker.java

@@ -2,7 +2,6 @@ package tech.powerjob.worker.core.tracker.task;
 
 import com.google.common.collect.Maps;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
 import tech.powerjob.common.enums.InstanceStatus;
 import tech.powerjob.common.model.InstanceDetail;
 import tech.powerjob.common.request.ServerScheduleJobReq;
@@ -61,7 +60,20 @@ public abstract class TaskTracker {
         this.instanceId = req.getInstanceId();
 
         this.instanceInfo = new InstanceInfo();
-        BeanUtils.copyProperties(req, instanceInfo);
+
+        // PowerJob 值拷贝场景不多,引入三方值拷贝类库可能引入类冲突等问题,综合评估手写 ROI 最高
+        instanceInfo.setJobId(req.getJobId());
+        instanceInfo.setInstanceId(req.getInstanceId());
+        instanceInfo.setWfInstanceId(req.getWfInstanceId());
+        instanceInfo.setExecuteType(req.getExecuteType());
+        instanceInfo.setProcessorType(req.getProcessorType());
+        instanceInfo.setProcessorInfo(req.getProcessorInfo());
+        instanceInfo.setJobParams(req.getJobParams());
+        instanceInfo.setInstanceParams(req.getInstanceParams());
+        instanceInfo.setThreadConcurrency(req.getThreadConcurrency());
+        instanceInfo.setTaskRetryNum(req.getTaskRetryNum());
+        instanceInfo.setLogConfig(req.getLogConfig());
+
         // 特殊处理超时时间
         if (instanceInfo.getInstanceTimeoutMS() <= 0) {
             instanceInfo.setInstanceTimeoutMS(Integer.MAX_VALUE);
@@ -94,7 +106,12 @@ public abstract class TaskTracker {
         log.warn("[TaskTracker-{}] create TaskTracker from request({}) failed.", req.getInstanceId(), req, e);
         // 直接发送失败请求
         TaskTrackerReportInstanceStatusReq response = new TaskTrackerReportInstanceStatusReq();
-        BeanUtils.copyProperties(req, response);
+
+        response.setAppId(workerRuntime.getAppId());
+        response.setJobId(req.getJobId());
+        response.setInstanceId(req.getInstanceId());
+        response.setWfInstanceId(req.getWfInstanceId());
+
         response.setInstanceStatus(InstanceStatus.FAILED.getV());
         response.setResult(String.format("init TaskTracker failed, reason: %s", e.toString()));
         response.setReportTime(System.currentTimeMillis());

+ 6 - 3
powerjob-worker/src/main/java/tech/powerjob/worker/core/tracker/task/heavy/FrequentTaskTracker.java

@@ -8,7 +8,6 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
 import tech.powerjob.common.enums.ExecuteType;
 import tech.powerjob.common.enums.InstanceStatus;
 import tech.powerjob.common.enums.TimeExpressionType;
@@ -135,10 +134,14 @@ public class FrequentTaskTracker extends HeavyTaskTracker {
         List<InstanceDetail.SubInstanceDetail> history = Lists.newLinkedList();
         recentSubInstanceInfo.forEach((subId, subInstanceInfo) -> {
             InstanceDetail.SubInstanceDetail subDetail = new InstanceDetail.SubInstanceDetail();
-            BeanUtils.copyProperties(subInstanceInfo, subDetail);
+
+            subDetail.setSubInstanceId(subId);
+            subDetail.setStartTime(subInstanceInfo.getStartTime());
+            subDetail.setFinishedTime(subInstanceInfo.getFinishedTime());
+            subDetail.setResult(subInstanceInfo.getResult());
+
             InstanceStatus status = InstanceStatus.of(subInstanceInfo.status);
             subDetail.setStatus(status.getV());
-            subDetail.setSubInstanceId(subId);
 
             history.add(subDetail);
         });