fix(sj_1.4.0):

1、hikari数据源连接池20改为100
2、Job清理日志减少事务粒度、批次量大索引失效
This commit is contained in:
zhengweilin 2025-03-18 17:54:53 +08:00
parent 38a8e43853
commit 75682b6677
2 changed files with 38 additions and 25 deletions

View File

@ -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);
} }
}); });
} }

View File

@ -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