Skip to content

Commit

Permalink
fix(dlm): data delete failed after data archived. (#735)
Browse files Browse the repository at this point in the history
Regenerate the ID for the rollback task and delete task to avoid task failure due to duplicate IDs
  • Loading branch information
guowl3 committed Nov 15, 2023
1 parent da63dfc commit 5d34514
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.oceanbase.odc.core.shared.constant.TaskStatus;
import com.oceanbase.odc.metadb.schedule.ScheduleTaskEntity;
import com.oceanbase.odc.service.dlm.model.DlmTask;
import com.oceanbase.odc.service.dlm.utils.DlmJobIdUtil;
import com.oceanbase.odc.service.schedule.model.DataArchiveClearParameters;
import com.oceanbase.tools.migrator.common.enums.JobType;

Expand Down Expand Up @@ -68,6 +69,9 @@ public void execute(JobExecutionContext context) {
List<DlmTask> taskUnits = JsonUtils.fromJson(dataArchiveTask.getResultJson(),
new TypeReference<List<DlmTask>>() {});
taskUnits.forEach(taskUnit -> {
taskUnit.setId(DlmJobIdUtil.generateHistoryJobId(taskEntity.getJobName(), taskEntity.getJobGroup(),
taskEntity.getId(),
taskUnits.size()));
taskUnit.setJobType(JobType.DELETE);
taskUnit.setStatus(TaskStatus.PREPARING);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.oceanbase.odc.core.shared.constant.TaskStatus;
import com.oceanbase.odc.metadb.schedule.ScheduleTaskEntity;
import com.oceanbase.odc.service.dlm.model.DlmTask;
import com.oceanbase.odc.service.dlm.utils.DlmJobIdUtil;
import com.oceanbase.odc.service.schedule.model.DataArchiveRollbackParameters;
import com.oceanbase.tools.migrator.common.enums.JobType;

Expand Down Expand Up @@ -65,6 +66,9 @@ public void execute(JobExecutionContext context) {
new TypeReference<List<DlmTask>>() {});
taskUnits.forEach(taskUnit -> {
Long temp = taskUnit.getSourceDatabaseId();
taskUnit.setId(DlmJobIdUtil.generateHistoryJobId(taskEntity.getJobName(), taskEntity.getJobGroup(),
taskEntity.getId(),
taskUnits.size()));
taskUnit.setSourceDatabaseId(taskUnit.getTargetDatabaseId());
taskUnit.setTargetDatabaseId(temp);
taskUnit.setJobType(JobType.ROLLBACK);
Expand Down

0 comments on commit 5d34514

Please sign in to comment.