From 75682b66772af0a816606f7678e45337765eefb9 Mon Sep 17 00:00:00 2001 From: zhengweilin Date: Tue, 18 Mar 2025 17:54:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(sj=5F1.4.0):=201=E3=80=81hikari=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E8=BF=9E=E6=8E=A5=E6=B1=A020=E6=94=B9?= =?UTF-8?q?=E4=B8=BA100=202=E3=80=81Job=E6=B8=85=E7=90=86=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E5=87=8F=E5=B0=91=E4=BA=8B=E5=8A=A1=E7=B2=92=E5=BA=A6?= =?UTF-8?q?=E3=80=81=E6=89=B9=E6=AC=A1=E9=87=8F=E5=A4=A7=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../support/schedule/JobClearLogSchedule.java | 61 +++++++++++-------- .../src/main/resources/application.yml | 2 +- 2 files changed, 38 insertions(+), 25 deletions(-) diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobClearLogSchedule.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobClearLogSchedule.java index 0e7bdc3cc..11125d592 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobClearLogSchedule.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/schedule/JobClearLogSchedule.java @@ -28,7 +28,10 @@ import org.springframework.util.CollectionUtils; import java.time.Duration; import java.time.LocalDateTime; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; /** * Job清理日志 一小时运行一次 @@ -108,36 +111,46 @@ public class JobClearLogSchedule extends AbstractSchedule implements Lifecycle { */ public void processJobLogPartitionTasks(List partitionTasks) { + // Waiting for deletion JobTaskBatchList + List partitionTasksIds = StreamUtils.toList(partitionTasks, PartitionTask::getId); + if (CollectionUtils.isEmpty(partitionTasksIds)) { + return; + } + List> idsPartition = Lists.partition(partitionTasksIds, 500); + + Set jobTaskListIds = new HashSet<>(); + Set jobLogMessageListIds = new HashSet<>(); + for (List ids : idsPartition) { + + // Waiting for deletion JobTaskList + List jobTaskList = jobTaskMapper.selectList(new LambdaQueryWrapper() + .select(JobTask::getId) + .in(JobTask::getTaskBatchId, ids)); + if (!CollectionUtils.isEmpty(jobTaskList)) { + Set jobTask = jobTaskList.stream().map(i -> i.getId()).collect(Collectors.toSet()); + jobTaskListIds.addAll(jobTask); + } + // Waiting for deletion JobLogMessageList + List jobLogMessageList = jobLogMessageMapper.selectList(new LambdaQueryWrapper() + .select(JobLogMessage::getId) + .in(JobLogMessage::getTaskBatchId, ids)); + if (!CollectionUtils.isEmpty(jobLogMessageList)) { + Set jobLogMessage = jobLogMessageList.stream().map(i -> i.getId()).collect(Collectors.toSet()); + jobLogMessageListIds.addAll(jobLogMessage); + } + } + transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(final TransactionStatus status) { - // Waiting for deletion JobTaskBatchList - List ids = StreamUtils.toList(partitionTasks, PartitionTask::getId); - if (CollectionUtils.isEmpty(ids)) { - return; + idsPartition.forEach(jobTaskMapper::deleteByIds); + if (!CollectionUtils.isEmpty(jobTaskListIds)) { + Lists.partition(jobTaskListIds.stream().toList(), 500).forEach(jobTaskMapper::deleteByIds); } - Lists.partition(ids, 500).forEach(jobTaskBatchMapper::deleteByIds); - - // Waiting for deletion JobTaskList - List jobTaskList = jobTaskMapper.selectList(new LambdaQueryWrapper() - .select(JobTask::getId) - .in(JobTask::getTaskBatchId, ids)); - if (CollectionUtils.isEmpty(jobTaskList)) { - return; + if (!CollectionUtils.isEmpty(jobLogMessageListIds)) { + Lists.partition(jobLogMessageListIds.stream().toList(), 500).forEach(jobLogMessageMapper::deleteByIds); } - List jobTaskListIds = StreamUtils.toList(jobTaskList, JobTask::getId); - Lists.partition(jobTaskListIds, 500).forEach(jobTaskMapper::deleteByIds); - - // Waiting for deletion JobLogMessageList - List jobLogMessageList = jobLogMessageMapper.selectList(new LambdaQueryWrapper() - .select(JobLogMessage::getId) - .in(JobLogMessage::getTaskBatchId, ids)); - if (CollectionUtils.isEmpty(jobLogMessageList)) { - return; - } - List jobLogMessageListIds = StreamUtils.toList(jobLogMessageList, JobLogMessage::getId); - Lists.partition(jobLogMessageListIds, 500).forEach(jobLogMessageMapper::deleteByIds); } }); } diff --git a/snail-job-server/snail-job-server-starter/src/main/resources/application.yml b/snail-job-server/snail-job-server-starter/src/main/resources/application.yml index 2bc0c5b3d..f6d45420a 100644 --- a/snail-job-server/snail-job-server-starter/src/main/resources/application.yml +++ b/snail-job-server/snail-job-server-starter/src/main/resources/application.yml @@ -49,7 +49,7 @@ spring: hikari: connection-timeout: 30000 minimum-idle: 5 - maximum-pool-size: 20 + maximum-pool-size: 100 auto-commit: true idle-timeout: 30000 pool-name: snail_job