1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.data.pipeline.core.consistencycheck;
19
20 import lombok.Getter;
21 import lombok.RequiredArgsConstructor;
22 import lombok.Setter;
23 import org.apache.shardingsphere.data.pipeline.core.consistencycheck.position.TableCheckRangePosition;
24 import org.apache.shardingsphere.data.pipeline.core.job.progress.listener.PipelineJobProgressListener;
25 import org.apache.shardingsphere.data.pipeline.core.job.progress.listener.PipelineJobUpdateProgress;
26 import org.apache.shardingsphere.data.pipeline.core.job.progress.persist.PipelineJobProgressPersistService;
27
28 import java.util.ArrayList;
29 import java.util.Collection;
30 import java.util.List;
31 import java.util.concurrent.CopyOnWriteArraySet;
32 import java.util.concurrent.atomic.AtomicLong;
33
34
35
36
37 @RequiredArgsConstructor
38 @Getter
39 @Setter
40 public final class ConsistencyCheckJobItemProgressContext implements PipelineJobProgressListener {
41
42 private final String jobId;
43
44 private final int shardingItem;
45
46 private final Collection<String> tableNames = new CopyOnWriteArraySet<>();
47
48 private final Collection<String> ignoredTableNames = new CopyOnWriteArraySet<>();
49
50 private volatile long recordsCount;
51
52 private final AtomicLong checkedRecordsCount = new AtomicLong(0L);
53
54 private final long checkBeginTimeMillis = System.currentTimeMillis();
55
56 private volatile Long checkEndTimeMillis;
57
58 private final List<TableCheckRangePosition> tableCheckRangePositions = new ArrayList<>();
59
60 private final String sourceDatabaseType;
61
62 @Override
63 public void onProgressUpdated(final PipelineJobUpdateProgress updateProgress) {
64 checkedRecordsCount.addAndGet(updateProgress.getProcessedRecordsCount());
65 PipelineJobProgressPersistService.notifyPersist(jobId, shardingItem);
66 }
67 }