代码调整
This commit is contained in:
@@ -61,7 +61,13 @@ public class OracleServiceImpl implements IOracleService {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
List<LocalDate> dateList = LocalDateUtil.getDateList(dataAsynParam.getStartTime(), dataAsynParam.getEndTime());
|
||||
dateList.forEach(date -> {
|
||||
for (LocalDate date : dateList) {
|
||||
//日志记录
|
||||
JobDetail jobDetail = jobDetailService.select(tableName, date);
|
||||
if (Objects.nonNull(jobDetail) && (jobDetail.getState() == 1 || jobDetail.getState() == 0)) {
|
||||
//如果该指标当前天已执行或正在执行,直接跳出循环
|
||||
break;
|
||||
}
|
||||
//程序监听
|
||||
StopWatch stopWatch = new StopWatch();
|
||||
stopWatch.start();
|
||||
@@ -84,39 +90,6 @@ public class OracleServiceImpl implements IOracleService {
|
||||
System.out.println(tableName + "查到" + size + "条数据后总堆内存为:" + runtime.totalMemory() / (1024 * 1024) + " MB");
|
||||
System.out.println(tableName + "查到" + size + "条数据后已用堆内存为:" + (runtime.totalMemory() - runtime.freeMemory()) / (1024 * 1024) + " MB");
|
||||
System.out.println(tableName + "查到" + size + "条数据后空闲堆内存为:" + runtime.freeMemory() / (1024 * 1024) + " MB");
|
||||
//日志记录
|
||||
JobDetail jobDetail = new JobDetail();
|
||||
jobDetail.setTableName(tableName);
|
||||
jobDetail.setExcuteDate(date);
|
||||
jobDetail = jobDetailService.select(jobDetail);
|
||||
if (Objects.nonNull(jobDetail)) {
|
||||
if (jobDetail.getState() == 2 && i == 0 && size != 0) {
|
||||
//第一片执行时返现是失败的,则再次执行
|
||||
jobDetail.setState(0);
|
||||
jobDetail.setRowCount(size);
|
||||
jobDetail.setUpdateTime(LocalDateTime.now());
|
||||
jobDetailService.updateByMultiId(jobDetail);
|
||||
} else if (jobDetail.getState() == 0 && i > 0 && jobDetail.getRowCount() + size != 0) {
|
||||
// 处理中,后续时间片的处理,累加记录数
|
||||
jobDetail.setState(0);
|
||||
jobDetail.setRowCount(jobDetail.getRowCount() + size);
|
||||
jobDetail.setUpdateTime(LocalDateTime.now());
|
||||
jobDetailService.updateByMultiId(jobDetail);
|
||||
} else {
|
||||
System.gc();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (size > 0) {
|
||||
jobDetail = new JobDetail();
|
||||
jobDetail.setTableName(tableName);
|
||||
jobDetail.setExcuteDate(date);
|
||||
jobDetail.setState(0);
|
||||
jobDetail.setRowCount(size);
|
||||
jobDetail.setUpdateTime(LocalDateTime.now());
|
||||
jobDetailService.save(jobDetail);
|
||||
}
|
||||
}
|
||||
try {
|
||||
if (CollectionUtil.isNotEmpty(weakReferenceData.get())) {
|
||||
//执行目标库的数据处理
|
||||
@@ -124,6 +97,20 @@ public class OracleServiceImpl implements IOracleService {
|
||||
executor.insertBatchByDB(weakReferenceData.get());
|
||||
//最后一片时修改状态
|
||||
}
|
||||
//手动执行GC
|
||||
System.gc();
|
||||
if (Objects.nonNull(jobDetail)) {
|
||||
if (i == 0) {
|
||||
jobDetail.setState(0);
|
||||
jobDetail.setRowCount(0);
|
||||
}
|
||||
jobDetail.setRowCount(jobDetail.getRowCount() + size);
|
||||
jobDetail.setUpdateTime(LocalDateTime.now());
|
||||
jobDetailService.updateByMultiId(jobDetail);
|
||||
} else {
|
||||
jobDetail = new JobDetail(tableName, date, 0, size, LocalDateTime.now());
|
||||
jobDetailService.save(jobDetail);
|
||||
}
|
||||
if (i + 1 == slice && Objects.nonNull(jobDetail)) {
|
||||
stopWatch.stop();
|
||||
jobDetail.setState(1);
|
||||
@@ -133,6 +120,9 @@ public class OracleServiceImpl implements IOracleService {
|
||||
}
|
||||
} catch (Exception exception) {
|
||||
exception.printStackTrace();
|
||||
if (Objects.isNull(jobDetail)) {
|
||||
jobDetail = new JobDetail(tableName, date, size);
|
||||
}
|
||||
jobDetail.setState(2);
|
||||
jobDetail.setUpdateTime(LocalDateTime.now());
|
||||
jobDetailService.updateByMultiId(jobDetail);
|
||||
@@ -142,7 +132,9 @@ public class OracleServiceImpl implements IOracleService {
|
||||
System.out.println("执行后已用堆内存为:" + (runtime.totalMemory() - runtime.freeMemory()) / (1024 * 1024) + " MB");
|
||||
System.out.println("执行后空闲堆内存为:" + runtime.freeMemory() / (1024 * 1024) + " MB");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ server:
|
||||
port: 8091
|
||||
spring:
|
||||
application:
|
||||
name: oracle-data
|
||||
name: oracle-oracle
|
||||
autoconfigure:
|
||||
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
|
||||
datasource:
|
||||
|
||||
Reference in New Issue
Block a user