diff --git a/batch/src/main/java/com/navercorp/pinpoint/batch/alarm/AlarmWriter.java b/batch/src/main/java/com/navercorp/pinpoint/batch/alarm/AlarmWriter.java index 28af730c7920..d19d7990738a 100644 --- a/batch/src/main/java/com/navercorp/pinpoint/batch/alarm/AlarmWriter.java +++ b/batch/src/main/java/com/navercorp/pinpoint/batch/alarm/AlarmWriter.java @@ -23,9 +23,8 @@ import com.navercorp.pinpoint.web.alarm.vo.Rule; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; -import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.StepExecution; import org.springframework.batch.core.StepExecutionListener; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; import java.util.List; @@ -51,18 +50,10 @@ public AlarmWriter( this.interceptor = Objects.requireNonNullElseGet(alarmWriterInterceptor, DefaultAlarmWriterInterceptor::new); } - @Override - public void beforeStep(@Nonnull StepExecution stepExecution) { - } - - @Override - public ExitStatus afterStep(@Nonnull StepExecution stepExecution) { - return null; - } @Override - public void write(@Nonnull List appAlarmCheckers) { - List> checkers = AppAlarmChecker.flatten(appAlarmCheckers); + public void write(@Nonnull Chunk appAlarmCheckers) { + List> checkers = AppAlarmChecker.flatten(appAlarmCheckers.getItems()); interceptor.before(checkers); try { for (AppAlarmChecker appAlarmChecker: appAlarmCheckers) { diff --git a/batch/src/main/java/com/navercorp/pinpoint/batch/job/AgentCountWriter.java b/batch/src/main/java/com/navercorp/pinpoint/batch/job/AgentCountWriter.java index 338328547ad1..56705cd57759 100644 --- a/batch/src/main/java/com/navercorp/pinpoint/batch/job/AgentCountWriter.java +++ b/batch/src/main/java/com/navercorp/pinpoint/batch/job/AgentCountWriter.java @@ -19,13 +19,17 @@ import com.navercorp.pinpoint.web.dao.AgentStatisticsDao; import com.navercorp.pinpoint.web.util.DateTimeUtils; import com.navercorp.pinpoint.web.vo.AgentCountStatistics; +import jakarta.annotation.Nonnull; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.springframework.batch.core.*; +import org.springframework.batch.core.BatchStatus; +import org.springframework.batch.core.ExitStatus; +import org.springframework.batch.core.JobExecutionException; +import org.springframework.batch.core.StepExecution; +import org.springframework.batch.core.StepExecutionListener; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; -import jakarta.annotation.Nonnull; -import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; @@ -69,8 +73,9 @@ public ExitStatus afterStep(@Nonnull StepExecution stepExecution) { } @Override - public void write(List items) { - count.getAndAdd(items.stream().mapToInt(el -> el).sum()); + public void write(Chunk items) { + int sum = items.getItems().stream().mapToInt(el -> el).sum(); + count.getAndAdd(sum); } private void writeCount(int count) throws JobExecutionException { diff --git a/batch/src/main/java/com/navercorp/pinpoint/batch/job/AgentRemover.java b/batch/src/main/java/com/navercorp/pinpoint/batch/job/AgentRemover.java index a7e605b810a6..a425a3d40d48 100644 --- a/batch/src/main/java/com/navercorp/pinpoint/batch/job/AgentRemover.java +++ b/batch/src/main/java/com/navercorp/pinpoint/batch/job/AgentRemover.java @@ -21,9 +21,9 @@ import jakarta.annotation.Nonnull; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; -import java.util.List; import java.util.Objects; /** @@ -40,7 +40,7 @@ public AgentRemover(BatchAgentService agentService) { } @Override - public void write(@Nonnull List serAgentKeys) throws Exception { + public void write(@Nonnull Chunk serAgentKeys) throws Exception { for (String serKey: serAgentKeys) { logger.info("Removing agent: {}", serKey); ClusterKey key = ClusterKey.parse(serKey); diff --git a/batch/src/main/java/com/navercorp/pinpoint/batch/job/ApplicationRemover.java b/batch/src/main/java/com/navercorp/pinpoint/batch/job/ApplicationRemover.java index e7b21ffe2a01..c27e967b04d8 100644 --- a/batch/src/main/java/com/navercorp/pinpoint/batch/job/ApplicationRemover.java +++ b/batch/src/main/java/com/navercorp/pinpoint/batch/job/ApplicationRemover.java @@ -19,9 +19,9 @@ import com.navercorp.pinpoint.batch.service.BatchApplicationService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; -import java.util.List; import java.util.Objects; /** @@ -38,7 +38,7 @@ public ApplicationRemover(BatchApplicationService applicationService) { } @Override - public void write(List applicationNames) throws Exception { + public void write(Chunk applicationNames) throws Exception { for (String applicationName : applicationNames) { logger.info("Removing application: {}", applicationName); this.applicationService.remove(applicationName); diff --git a/batch/src/main/java/com/navercorp/pinpoint/batch/job/CleanTargetWriter.java b/batch/src/main/java/com/navercorp/pinpoint/batch/job/CleanTargetWriter.java index 0906640f9e64..7d5c1519b83c 100644 --- a/batch/src/main/java/com/navercorp/pinpoint/batch/job/CleanTargetWriter.java +++ b/batch/src/main/java/com/navercorp/pinpoint/batch/job/CleanTargetWriter.java @@ -18,6 +18,7 @@ import com.navercorp.pinpoint.batch.vo.CleanTarget; import jakarta.annotation.Nonnull; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; import java.util.ArrayList; @@ -37,13 +38,14 @@ public CleanTargetWriter(ItemWriter applicationRemover, ItemWriter items) throws Exception { + public void write(@Nonnull Chunk chunks) throws Exception { + List items = chunks.getItems(); if (this.applicationRemover != null) { - this.applicationRemover.write(getApplicationNames(items)); + this.applicationRemover.write(new Chunk<>(getApplicationNames(items))); } if (this.agentRemover != null) { - this.agentRemover.write(getAgents(items)); + this.agentRemover.write(new Chunk<>(getAgents(items))); } } diff --git a/batch/src/main/java/com/navercorp/pinpoint/batch/job/EmptyItemWriter.java b/batch/src/main/java/com/navercorp/pinpoint/batch/job/EmptyItemWriter.java index 70bcbd39665b..f0e8988d4767 100644 --- a/batch/src/main/java/com/navercorp/pinpoint/batch/job/EmptyItemWriter.java +++ b/batch/src/main/java/com/navercorp/pinpoint/batch/job/EmptyItemWriter.java @@ -19,16 +19,15 @@ import jakarta.annotation.Nonnull; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; -import java.util.List; - public class EmptyItemWriter implements ItemWriter { private static final Logger logger = LogManager.getLogger(EmptyItemWriter.class); @Override - public void write(@Nonnull List items) throws Exception { + public void write(@Nonnull Chunk items) throws Exception { logger.info("Write items: {}", items); } } diff --git a/batch/src/main/java/com/navercorp/pinpoint/batch/job/ItemListWriter.java b/batch/src/main/java/com/navercorp/pinpoint/batch/job/ItemListWriter.java index 484301399029..f5e20e65b6cd 100644 --- a/batch/src/main/java/com/navercorp/pinpoint/batch/job/ItemListWriter.java +++ b/batch/src/main/java/com/navercorp/pinpoint/batch/job/ItemListWriter.java @@ -17,11 +17,12 @@ package com.navercorp.pinpoint.batch.job; import jakarta.annotation.Nonnull; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; -import java.util.ArrayList; import java.util.List; + /** * @author youngjin.kim2 */ @@ -34,25 +35,18 @@ public ItemListWriter(ItemWriter delegate) { } @Override - public void write(@Nonnull List> items) throws Exception { + public void write(@Nonnull Chunk> items) throws Exception { if (this.delegate != null) { this.delegate.write(flatten(items)); } } - private List flatten(List> items) { - List lst = new ArrayList<>(size(items)); + private Chunk flatten(Chunk> items) { + Chunk lst = new Chunk<>(); for (List sub: items) { lst.addAll(sub); } return lst; } - private int size(List> items) { - int size = 0; - for (List item : items) { - size += item.size(); - } - return size; - } } diff --git a/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmJobTest.java b/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmJobTest.java index 9402f30bed6d..1d0643dea723 100644 --- a/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmJobTest.java +++ b/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmJobTest.java @@ -18,13 +18,12 @@ import org.springframework.batch.core.BatchStatus; import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobParameter; import org.springframework.batch.core.JobParameters; +import org.springframework.batch.core.JobParametersBuilder; import org.springframework.batch.test.JobLauncherTestUtils; import org.springframework.context.support.GenericXmlApplicationContext; import java.util.Date; -import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -43,7 +42,8 @@ public static void main(String[] args) throws Exception { } private static JobParameters getParameters() { - Map parameters = Map.of("schedule.scheduledFireTime", new JobParameter(new Date())); - return new JobParameters(parameters); + JobParametersBuilder builder = new JobParametersBuilder(); + builder.addDate("schedule.scheduledFireTime", new Date()); + return builder.toJobParameters(); } } diff --git a/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmWriterIsolationTest.java b/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmWriterIsolationTest.java index a600c13130e5..917e81e0d003 100644 --- a/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmWriterIsolationTest.java +++ b/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmWriterIsolationTest.java @@ -28,6 +28,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.batch.item.Chunk; import java.util.HashMap; import java.util.List; @@ -75,7 +76,7 @@ public void whenSequenceCountIsLessThanTimingCountDoSendAlarm() { mockingAlarmMessageSender(checker); // when - writer.write(List.of(new AppAlarmChecker(checkers))); + writer.write(Chunk.of(new AppAlarmChecker(checkers))); // then verify(alarmMessageSender).sendSms(checker, 1); @@ -95,7 +96,7 @@ public void whenSequenceCountIsEqualToTimingCountDoNotSendAlarm() { mockingAlarmMessageSender(checker); // when - writer.write(List.of(new AppAlarmChecker(checkers))); + writer.write(Chunk.of(new AppAlarmChecker(checkers))); // then verify(alarmMessageSender, never()).sendSms(checker, 1); diff --git a/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmWriterTest.java b/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmWriterTest.java index 08c1dd0231fc..4d50999cfe26 100644 --- a/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmWriterTest.java +++ b/batch/src/test/java/com/navercorp/pinpoint/batch/alarm/AlarmWriterTest.java @@ -24,6 +24,7 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.batch.item.Chunk; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -55,7 +56,7 @@ protected Long getDetectedValue() { }; List> checkers = List.of(checker); - writer.write(List.of(new AppAlarmChecker(checkers))); + writer.write(Chunk.of(new AppAlarmChecker(checkers))); } @Disabled @@ -75,7 +76,7 @@ protected Long getDetectedValue() { }; List> checkers = List.of(checker); - writer.write(List.of(new AppAlarmChecker(checkers))); + writer.write(Chunk.of(new AppAlarmChecker(checkers))); } } diff --git a/pom.xml b/pom.xml index 0d8fb6ffc515..c5833be3d8b9 100644 --- a/pom.xml +++ b/pom.xml @@ -171,7 +171,7 @@ 4.3.30.RELEASE 5.3.28 - 4.3.7 + 5.1.1 6.1.8 diff --git a/uristat/uristat-batch/src/main/java/com/navercorp/pinpoint/batch/alarm/UriStatAlarmWriter.java b/uristat/uristat-batch/src/main/java/com/navercorp/pinpoint/batch/alarm/UriStatAlarmWriter.java index 7cc16f919a28..5aaceaa2d3e5 100644 --- a/uristat/uristat-batch/src/main/java/com/navercorp/pinpoint/batch/alarm/UriStatAlarmWriter.java +++ b/uristat/uristat-batch/src/main/java/com/navercorp/pinpoint/batch/alarm/UriStatAlarmWriter.java @@ -1,5 +1,6 @@ package com.navercorp.pinpoint.batch.alarm; +import com.navercorp.pinpoint.common.util.CollectionUtils; import com.navercorp.pinpoint.pinot.alarm.DefaultPinotAlarmWriterInterceptor; import com.navercorp.pinpoint.pinot.alarm.PinotAlarmWriterInterceptor; import com.navercorp.pinpoint.pinot.alarm.checker.PinotAlarmChecker; @@ -7,26 +8,21 @@ import com.navercorp.pinpoint.pinot.alarm.service.PinotAlarmService; import com.navercorp.pinpoint.pinot.alarm.vo.PinotAlarmHistory; import com.navercorp.pinpoint.pinot.alarm.vo.PinotAlarmRule; -import com.navercorp.pinpoint.common.util.CollectionUtils; +import jakarta.annotation.Nullable; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.StepExecutionListener; +import org.springframework.batch.item.Chunk; import org.springframework.batch.item.ItemWriter; -import jakarta.annotation.Nonnull; -import jakarta.annotation.Nullable; import java.util.List; import java.util.Objects; -public class UriStatAlarmWriter implements ItemWriter, StepExecutionListener { +public class UriStatAlarmWriter implements ItemWriter { private final Logger logger = LogManager.getLogger(UriStatAlarmWriter.class); private final PinotAlarmService alarmService; private final AlarmMessageSender alarmMessageSender; private final PinotAlarmWriterInterceptor interceptor; - private StepExecution stepExecution; public UriStatAlarmWriter(AlarmMessageSender alarmMessageSender, PinotAlarmService alarmService, @@ -37,29 +33,20 @@ public UriStatAlarmWriter(AlarmMessageSender alarmMessageSender, } @Override - public void beforeStep(StepExecution stepExecution) { - this.stepExecution = stepExecution; - } - - @Override - public ExitStatus afterStep(@Nonnull StepExecution stepExecution) { - return null; - } - - @Override - public void write(List checkersList) throws Exception { - interceptor.before(checkersList); - if (CollectionUtils.isEmpty(checkersList)) { + public void write(Chunk checkersList) throws Exception { + final List items = checkersList.getItems(); + interceptor.before(items); + if (checkersList.isEmpty()) { return; } - for (PinotAlarmCheckers alarmCheckers : checkersList) { + for (PinotAlarmCheckers alarmCheckers : items) { List> children = alarmCheckers.getChildren(); if (CollectionUtils.isEmpty(children)) { return; } execute(children); } - interceptor.after(checkersList); + interceptor.after(items); } private void execute(List> alarmCheckers) {