fix(sj_1.4.0):
1、hikari数据源连接池20改为100 2、Job清理日志减少事务粒度、批次量大索引失效
This commit is contained in:
parent
38a8e43853
commit
75682b6677
@ -28,7 +28,10 @@ import org.springframework.util.CollectionUtils;
|
|||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Job清理日志 一小时运行一次
|
* Job清理日志 一小时运行一次
|
||||||
@ -108,36 +111,46 @@ public class JobClearLogSchedule extends AbstractSchedule implements Lifecycle {
|
|||||||
*/
|
*/
|
||||||
public void processJobLogPartitionTasks(List<? extends PartitionTask> partitionTasks) {
|
public void processJobLogPartitionTasks(List<? extends PartitionTask> partitionTasks) {
|
||||||
|
|
||||||
|
// Waiting for deletion JobTaskBatchList
|
||||||
|
List<Long> partitionTasksIds = StreamUtils.toList(partitionTasks, PartitionTask::getId);
|
||||||
|
if (CollectionUtils.isEmpty(partitionTasksIds)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<List<Long>> idsPartition = Lists.partition(partitionTasksIds, 500);
|
||||||
|
|
||||||
|
Set<Long> jobTaskListIds = new HashSet<>();
|
||||||
|
Set<Long> jobLogMessageListIds = new HashSet<>();
|
||||||
|
for (List<Long> ids : idsPartition) {
|
||||||
|
|
||||||
|
// Waiting for deletion JobTaskList
|
||||||
|
List<JobTask> jobTaskList = jobTaskMapper.selectList(new LambdaQueryWrapper<JobTask>()
|
||||||
|
.select(JobTask::getId)
|
||||||
|
.in(JobTask::getTaskBatchId, ids));
|
||||||
|
if (!CollectionUtils.isEmpty(jobTaskList)) {
|
||||||
|
Set<Long> jobTask = jobTaskList.stream().map(i -> i.getId()).collect(Collectors.toSet());
|
||||||
|
jobTaskListIds.addAll(jobTask);
|
||||||
|
}
|
||||||
|
// Waiting for deletion JobLogMessageList
|
||||||
|
List<JobLogMessage> jobLogMessageList = jobLogMessageMapper.selectList(new LambdaQueryWrapper<JobLogMessage>()
|
||||||
|
.select(JobLogMessage::getId)
|
||||||
|
.in(JobLogMessage::getTaskBatchId, ids));
|
||||||
|
if (!CollectionUtils.isEmpty(jobLogMessageList)) {
|
||||||
|
Set<Long> jobLogMessage = jobLogMessageList.stream().map(i -> i.getId()).collect(Collectors.toSet());
|
||||||
|
jobLogMessageListIds.addAll(jobLogMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
|
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
|
||||||
@Override
|
@Override
|
||||||
protected void doInTransactionWithoutResult(final TransactionStatus status) {
|
protected void doInTransactionWithoutResult(final TransactionStatus status) {
|
||||||
|
|
||||||
// Waiting for deletion JobTaskBatchList
|
idsPartition.forEach(jobTaskMapper::deleteByIds);
|
||||||
List<Long> ids = StreamUtils.toList(partitionTasks, PartitionTask::getId);
|
if (!CollectionUtils.isEmpty(jobTaskListIds)) {
|
||||||
if (CollectionUtils.isEmpty(ids)) {
|
Lists.partition(jobTaskListIds.stream().toList(), 500).forEach(jobTaskMapper::deleteByIds);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
Lists.partition(ids, 500).forEach(jobTaskBatchMapper::deleteByIds);
|
if (!CollectionUtils.isEmpty(jobLogMessageListIds)) {
|
||||||
|
Lists.partition(jobLogMessageListIds.stream().toList(), 500).forEach(jobLogMessageMapper::deleteByIds);
|
||||||
// Waiting for deletion JobTaskList
|
|
||||||
List<JobTask> jobTaskList = jobTaskMapper.selectList(new LambdaQueryWrapper<JobTask>()
|
|
||||||
.select(JobTask::getId)
|
|
||||||
.in(JobTask::getTaskBatchId, ids));
|
|
||||||
if (CollectionUtils.isEmpty(jobTaskList)) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
List<Long> jobTaskListIds = StreamUtils.toList(jobTaskList, JobTask::getId);
|
|
||||||
Lists.partition(jobTaskListIds, 500).forEach(jobTaskMapper::deleteByIds);
|
|
||||||
|
|
||||||
// Waiting for deletion JobLogMessageList
|
|
||||||
List<JobLogMessage> jobLogMessageList = jobLogMessageMapper.selectList(new LambdaQueryWrapper<JobLogMessage>()
|
|
||||||
.select(JobLogMessage::getId)
|
|
||||||
.in(JobLogMessage::getTaskBatchId, ids));
|
|
||||||
if (CollectionUtils.isEmpty(jobLogMessageList)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
List<Long> jobLogMessageListIds = StreamUtils.toList(jobLogMessageList, JobLogMessage::getId);
|
|
||||||
Lists.partition(jobLogMessageListIds, 500).forEach(jobLogMessageMapper::deleteByIds);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ spring:
|
|||||||
hikari:
|
hikari:
|
||||||
connection-timeout: 30000
|
connection-timeout: 30000
|
||||||
minimum-idle: 5
|
minimum-idle: 5
|
||||||
maximum-pool-size: 20
|
maximum-pool-size: 100
|
||||||
auto-commit: true
|
auto-commit: true
|
||||||
idle-timeout: 30000
|
idle-timeout: 30000
|
||||||
pool-name: snail_job
|
pool-name: snail_job
|
||||||
|
Loading…
Reference in New Issue
Block a user