From 6e86ac853ae53103f44e6f790d29744207368c64 Mon Sep 17 00:00:00 2001 From: "adam.magyari" Date: Wed, 13 Nov 2024 16:21:00 +0100 Subject: [PATCH] FINERACT-2081: External event sending enhance findBy query --- .../external/jobs/SendAsynchronousEventsTasklet.java | 2 +- .../external/repository/ExternalEventRepository.java | 2 +- .../jobs/SendAsynchronousEventsTaskletTest.java | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTasklet.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTasklet.java index 51ef86d69..1f85185fd 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTasklet.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTasklet.java @@ -83,7 +83,7 @@ public class SendAsynchronousEventsTasklet implements Tasklet { private List getQueuedEventsBatch() { int readBatchSize = getBatchSize(); Pageable batchSize = PageRequest.ofSize(readBatchSize); - return measure(() -> repository.findByStatusOrderById(ExternalEventStatus.TO_BE_SENT, batchSize), + return measure(() -> repository.findByStatusOrderByBusinessDateAscIdAsc(ExternalEventStatus.TO_BE_SENT, batchSize), (events, timeTaken) -> log.debug("Loaded {} events in {}ms", events.size(), timeTaken.toMillis())); } diff --git a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/ExternalEventRepository.java b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/ExternalEventRepository.java index 9f7ccbddc..aff28cc74 100644 --- a/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/ExternalEventRepository.java +++ b/fineract-core/src/main/java/org/apache/fineract/infrastructure/event/external/repository/ExternalEventRepository.java @@ -33,7 +33,7 @@ import org.springframework.data.repository.query.Param; public interface ExternalEventRepository extends JpaRepository, JpaSpecificationExecutor { - List findByStatusOrderById(ExternalEventStatus status, Pageable batchSize); + List findByStatusOrderByBusinessDateAscIdAsc(ExternalEventStatus status, Pageable batchSize); @Modifying(flushAutomatically = true) @Query("delete from ExternalEvent e where e.status = :status and e.businessDate <= :dateForPurgeCriteria") diff --git a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTaskletTest.java b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTaskletTest.java index 0caaf3c4e..3bb5cb36b 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTaskletTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/infrastructure/event/external/jobs/SendAsynchronousEventsTaskletTest.java @@ -128,7 +128,7 @@ class SendAsynchronousEventsTaskletTest { MessageV1 dummyMessage = new MessageV1(1, "aSource", "aType", "nocategory", "aCreateDate", "aBusinessDate", "aTenantId", "anidempotencyKey", "aSchema", Mockito.mock(ByteBuffer.class)); - when(repository.findByStatusOrderById(Mockito.any(), Mockito.any())).thenReturn(events); + when(repository.findByStatusOrderByBusinessDateAscIdAsc(Mockito.any(), Mockito.any())).thenReturn(events); when(messageFactory.createMessage(Mockito.any())).thenReturn(dummyMessage); when(byteBufferConverter.convert(Mockito.any(ByteBuffer.class))).thenReturn(new byte[0]); // when @@ -147,7 +147,7 @@ class SendAsynchronousEventsTaskletTest { createExternalEventView("aType", "aCategory", "aSchema", new byte[0], "aIdempotencyKey", 1L)); MessageV1 dummyMessage = new MessageV1(1, "aSource", "aType", "nocategory", "aCreateDate", "aBusinessDate", "aTenantId", "anidempotencyKey", "aSchema", Mockito.mock(ByteBuffer.class)); - when(repository.findByStatusOrderById(Mockito.any(), Mockito.any())).thenReturn(events); + when(repository.findByStatusOrderByBusinessDateAscIdAsc(Mockito.any(), Mockito.any())).thenReturn(events); when(messageFactory.createMessage(Mockito.any())).thenReturn(dummyMessage); when(byteBufferConverter.convert(Mockito.any(ByteBuffer.class))).thenReturn(new byte[0]); doThrow(new AcknowledgementTimeoutException("Event Send Exception", new RuntimeException())).when(eventProducer) @@ -166,7 +166,7 @@ class SendAsynchronousEventsTaskletTest { .asList(createExternalEventView("aType", "aCategory", "aSchema", new byte[0], "aIdempotencyKey", 1L)); MessageV1 dummyMessage = new MessageV1(1, "aSource", "aType", "nocategory", "aCreateDate", "aBusinessDate", "aTenantId", "anidempotencyKey", "aSchema", Mockito.mock(ByteBuffer.class)); - when(repository.findByStatusOrderById(Mockito.any(), Mockito.any())).thenReturn(events); + when(repository.findByStatusOrderByBusinessDateAscIdAsc(Mockito.any(), Mockito.any())).thenReturn(events); when(messageFactory.createMessage(Mockito.any())).thenReturn(dummyMessage); when(byteBufferConverter.convert(Mockito.any(ByteBuffer.class))).thenReturn(new byte[0]); // when @@ -185,7 +185,7 @@ class SendAsynchronousEventsTaskletTest { .asList(createExternalEventView("aType", "aCategory", "aSchema", new byte[0], "aIdempotencyKey", null)); MessageV1 dummyMessage = new MessageV1(1, "aSource", "aType", "nocategory", "aCreateDate", "aBusinessDate", "aTenantId", "anidempotencyKey", "aSchema", Mockito.mock(ByteBuffer.class)); - when(repository.findByStatusOrderById(Mockito.any(), Mockito.any())).thenReturn(events); + when(repository.findByStatusOrderByBusinessDateAscIdAsc(Mockito.any(), Mockito.any())).thenReturn(events); when(messageFactory.createMessage(Mockito.any())).thenReturn(dummyMessage); byte[] byteMsg = new byte[0]; when(byteBufferConverter.convert(Mockito.any(ByteBuffer.class))).thenReturn(byteMsg); @@ -202,11 +202,11 @@ class SendAsynchronousEventsTaskletTest { public void givenEventBatchSizeIsConfiguredAs10WhenTaskExecutionThenEventReadPageSizeIsCorrect() { ArgumentCaptor externalEventPageSizeArgumentCaptor = ArgumentCaptor.forClass(Pageable.class); List events = new ArrayList<>(); - when(repository.findByStatusOrderById(Mockito.any(), Mockito.any())).thenReturn(events); + when(repository.findByStatusOrderByBusinessDateAscIdAsc(Mockito.any(), Mockito.any())).thenReturn(events); // when resultStatus = underTest.execute(stepContribution, chunkContext); // then - verify(repository).findByStatusOrderById(Mockito.any(), externalEventPageSizeArgumentCaptor.capture()); + verify(repository).findByStatusOrderByBusinessDateAscIdAsc(Mockito.any(), externalEventPageSizeArgumentCaptor.capture()); assertThat(externalEventPageSizeArgumentCaptor.getValue().getPageSize()).isEqualTo(10); }