Task results refactoring

This commit is contained in:
ViacheslavKlimov 2025-05-01 15:02:28 +03:00
parent 9e878923e1
commit 950d1d85c4
7 changed files with 43 additions and 41 deletions

View File

@ -21,8 +21,8 @@ import org.thingsboard.server.common.data.job.DummyJobConfiguration;
import org.thingsboard.server.common.data.job.Job;
import org.thingsboard.server.common.data.job.JobType;
import org.thingsboard.server.common.data.job.task.DummyTask;
import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
import org.thingsboard.server.common.data.job.task.DummyTaskResult;
import org.thingsboard.server.common.data.job.task.DummyTaskResult.DummyTaskFailure;
import org.thingsboard.server.common.data.job.task.Task;
import org.thingsboard.server.common.data.job.task.TaskResult;

View File

@ -30,8 +30,8 @@ import org.thingsboard.server.common.data.job.Job;
import org.thingsboard.server.common.data.job.JobResult;
import org.thingsboard.server.common.data.job.JobStatus;
import org.thingsboard.server.common.data.job.JobType;
import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
import org.thingsboard.server.common.data.job.task.DummyTaskResult;
import org.thingsboard.server.common.data.job.task.DummyTaskResult.DummyTaskFailure;
import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.controller.AbstractControllerTest;
import org.thingsboard.server.dao.job.JobService;

View File

@ -23,7 +23,6 @@ import lombok.experimental.SuperBuilder;
import org.thingsboard.server.common.data.job.JobType;
import java.util.List;
import java.util.Optional;
@Data
@NoArgsConstructor
@ -43,17 +42,13 @@ public class DummyTask extends Task<DummyTaskResult> {
}
@Override
public DummyTaskResult toResult(boolean discarded, Optional<Throwable> error) {
var result = DummyTaskResult.builder();
result.discarded(discarded);
if (error.isPresent()) {
result.failure(DummyTaskFailure.builder()
.error(error.map(Throwable::getMessage).orElse(null))
.number(number)
.failAlways(failAlways)
.build());
}
return result.build();
public DummyTaskResult toFailed(Throwable error) {
return DummyTaskResult.failed(this, error);
}
@Override
public DummyTaskResult toDiscarded() {
return DummyTaskResult.discarded();
}
@Override
@ -61,15 +56,4 @@ public class DummyTask extends Task<DummyTaskResult> {
return JobType.DUMMY;
}
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
public static class DummyTaskFailure extends TaskFailure { // todo: do we need separate structure?
private int number;
private boolean failAlways;
}
}

View File

@ -20,7 +20,6 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.thingsboard.server.common.data.job.JobType;
import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
@Data
@EqualsAndHashCode(callSuper = true)
@ -28,21 +27,43 @@ import org.thingsboard.server.common.data.job.task.DummyTask.DummyTaskFailure;
@SuperBuilder
public class DummyTaskResult extends TaskResult {
private static final DummyTaskResult SUCCESS = new DummyTaskResult(true);
private static final DummyTaskResult SUCCESS = DummyTaskResult.builder().success(true).build();
private static final DummyTaskResult DISCARDED = DummyTaskResult.builder().discarded(true).build();
private DummyTaskFailure failure;
public DummyTaskResult(boolean success) {
super(success);
}
public static DummyTaskResult success() {
return SUCCESS;
}
public static DummyTaskResult failed(DummyTask task, Throwable error) {
DummyTaskResult result = new DummyTaskResult();
result.setFailure(DummyTaskFailure.builder()
.error(error.getMessage())
.number(task.getNumber())
.failAlways(task.isFailAlways())
.build());
return result;
}
public static DummyTaskResult discarded() {
return DISCARDED;
}
@Override
public JobType getJobType() {
return JobType.DUMMY;
}
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
public static class DummyTaskFailure extends TaskFailure {
private int number;
private boolean failAlways;
}
}

View File

@ -27,8 +27,6 @@ import org.thingsboard.server.common.data.id.JobId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.job.JobType;
import java.util.Optional;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "jobType")
@ -51,7 +49,9 @@ public abstract class Task<R extends TaskResult> {
@JsonIgnore
public abstract Object getKey();
public abstract R toResult(boolean discarded, Optional<Throwable> error);
public abstract R toFailed(Throwable error);
public abstract R toDiscarded();
public abstract JobType getJobType();

View File

@ -39,10 +39,6 @@ public abstract class TaskResult {
private boolean success;
private boolean discarded;
public TaskResult(boolean success) {
this.success = success;
}
public abstract JobType getJobType();
}

View File

@ -37,7 +37,6 @@ import org.thingsboard.server.queue.provider.TaskProcessorQueueFactory;
import org.thingsboard.server.queue.util.AfterStartUp;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@ -140,11 +139,13 @@ public abstract class TaskProcessor<T extends Task<R>, R extends TaskResult> {
public abstract R process(T task) throws Exception;
private void reportTaskFailure(T task, Throwable error) {
reportTaskResult(task, task.toResult(false, Optional.of(error)));
R taskResult = task.toFailed(error);
reportTaskResult(task, taskResult);
}
private void reportTaskDiscarded(T task) {
reportTaskResult(task, task.toResult(true, Optional.empty()));
R taskResult = task.toDiscarded();
reportTaskResult(task, taskResult);
}
private void reportTaskResult(T task, R result) {