mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
fix: server can't record zero cost processor's status #620
This commit is contained in:
parent
174696066d
commit
a7394e518c
@ -10,6 +10,7 @@ import tech.powerjob.common.enums.TimeExpressionType;
|
||||
import tech.powerjob.common.model.LifeCycle;
|
||||
import tech.powerjob.common.request.ServerStopInstanceReq;
|
||||
import tech.powerjob.common.request.TaskTrackerReportInstanceStatusReq;
|
||||
import tech.powerjob.common.utils.CommonUtils;
|
||||
import tech.powerjob.remote.framework.base.URL;
|
||||
import tech.powerjob.server.common.module.WorkerInfo;
|
||||
import tech.powerjob.server.common.timewheel.holder.HashedWheelTimerHolder;
|
||||
@ -81,6 +82,14 @@ public class InstanceManager implements TransportServiceAware {
|
||||
log.warn("[InstanceManager-{}] can't find InstanceInfo from database", instanceId);
|
||||
return;
|
||||
}
|
||||
|
||||
// 考虑极端情况:Processor 处理耗时小于 server 写 DB 耗时,会导致状态上报时无 taskTracker 地址,此处等待后重新从DB获取数据 GitHub#620
|
||||
if (StringUtils.isEmpty(instanceInfo.getTaskTrackerAddress())) {
|
||||
log.warn("[InstanceManager-{}] TaskTrackerAddress is empty, server will wait then acquire again!", instanceId);
|
||||
CommonUtils.easySleep(277);
|
||||
instanceInfo = instanceInfoRepository.findByInstanceId(instanceId);
|
||||
}
|
||||
|
||||
int originStatus = instanceInfo.getStatus();
|
||||
// 丢弃过期的上报数据
|
||||
if (req.getReportTime() <= instanceInfo.getLastReportTime()) {
|
||||
|
@ -0,0 +1,18 @@
|
||||
package tech.powerjob.samples.processors.test;
|
||||
|
||||
import tech.powerjob.worker.core.processor.ProcessResult;
|
||||
import tech.powerjob.worker.core.processor.TaskContext;
|
||||
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
|
||||
|
||||
/**
|
||||
* ZeroCostTestProcessor
|
||||
*
|
||||
* @author tjq
|
||||
* @since 2023/5/7
|
||||
*/
|
||||
public class ZeroCostTestProcessor implements BasicProcessor {
|
||||
@Override
|
||||
public ProcessResult process(TaskContext context) throws Exception {
|
||||
return new ProcessResult(true, "zero cost");
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user