diff --git a/NEWS.md b/NEWS.md index 5e35e5b39..6c9da47e6 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +## v4.0.6 2025-01-08 +### Tech Dept +* Recreate upload ranges each upload execution ([MSEARCH-934](https://folio-org.atlassian.net/browse/MSEARCH-934)) + ## v4.0.5 2025-01-03 ### Bug fixes * Implement scheduled indexing for instance sub-resources ([MSEARCH-922](https://folio-org.atlassian.net/browse/MSEARCH-922)) diff --git a/src/main/java/org/folio/search/service/reindex/ReindexUploadRangeIndexService.java b/src/main/java/org/folio/search/service/reindex/ReindexUploadRangeIndexService.java index d4fc5551d..6f3b14d6e 100644 --- a/src/main/java/org/folio/search/service/reindex/ReindexUploadRangeIndexService.java +++ b/src/main/java/org/folio/search/service/reindex/ReindexUploadRangeIndexService.java @@ -39,7 +39,7 @@ public void prepareAndSendIndexRanges(ReindexEntityType entityType) { var repository = Optional.ofNullable(repositories.get(entityType)) .orElseThrow(() -> new UnsupportedOperationException("No repository found for entity type: " + entityType)); - var uploadRanges = repository.getUploadRanges(true); + var uploadRanges = repository.createUploadRanges(); statusService.updateReindexUploadStarted(entityType, uploadRanges.size()); indexRangeEventProducer.sendMessages(prepareEvents(uploadRanges)); } diff --git a/src/main/java/org/folio/search/service/reindex/jdbc/UploadRangeRepository.java b/src/main/java/org/folio/search/service/reindex/jdbc/UploadRangeRepository.java index aed9c1ffd..bd911acbe 100644 --- a/src/main/java/org/folio/search/service/reindex/jdbc/UploadRangeRepository.java +++ b/src/main/java/org/folio/search/service/reindex/jdbc/UploadRangeRepository.java @@ -39,6 +39,7 @@ ON CONFLICT (id) """; private static final String SELECT_UPLOAD_RANGE_BY_ENTITY_TYPE_SQL = "SELECT * FROM %s WHERE entity_type = ?;"; + private static final String DELETE_UPLOAD_RANGE_SQL = "DELETE FROM %s WHERE entity_type = ?;"; private static final TypeReference> VALUE_TYPE_REF = new TypeReference<>() { }; protected final ReindexConfigurationProperties reindexConfig; @@ -51,14 +52,19 @@ protected UploadRangeRepository(JdbcTemplate jdbcTemplate, this.reindexConfig = reindexConfig; } - public List getUploadRanges(boolean populateIfNotExist) { + public List getUploadRanges() { var fullTableName = getFullTableName(context, UPLOAD_RANGE_TABLE); var sql = SELECT_UPLOAD_RANGE_BY_ENTITY_TYPE_SQL.formatted(fullTableName); - var uploadRanges = jdbcTemplate.query(sql, uploadRangeRowMapper(), entityType().getType()); - return populateIfNotExist && uploadRanges.isEmpty() - ? prepareAndSaveUploadRanges() - : uploadRanges; + return jdbcTemplate.query(sql, uploadRangeRowMapper(), entityType().getType()); + } + + public List createUploadRanges() { + var fullTableName = getFullTableName(context, UPLOAD_RANGE_TABLE); + var deleteSql = DELETE_UPLOAD_RANGE_SQL.formatted(fullTableName); + jdbcTemplate.update(deleteSql, entityType().getType()); + + return prepareAndSaveUploadRanges(); } public List> fetchByIdRange(String lower, String upper) { diff --git a/src/test/java/org/folio/search/service/reindex/ReindexUploadRangeIndexServiceTest.java b/src/test/java/org/folio/search/service/reindex/ReindexUploadRangeIndexServiceTest.java index 34b0777ed..1ad1a0610 100644 --- a/src/test/java/org/folio/search/service/reindex/ReindexUploadRangeIndexServiceTest.java +++ b/src/test/java/org/folio/search/service/reindex/ReindexUploadRangeIndexServiceTest.java @@ -46,7 +46,7 @@ void setUp() { @Test void prepareAndSendIndexRanges_positive(@Random UploadRangeEntity uploadRange) { // arrange - when(repository.getUploadRanges(true)).thenReturn(List.of(uploadRange)); + when(repository.createUploadRanges()).thenReturn(List.of(uploadRange)); // act service.prepareAndSendIndexRanges(ReindexEntityType.INSTANCE); diff --git a/src/test/java/org/folio/search/service/reindex/jdbc/ReindexJdbcRepositoriesIT.java b/src/test/java/org/folio/search/service/reindex/jdbc/ReindexJdbcRepositoriesIT.java index 4604c9705..98b5c11a9 100644 --- a/src/test/java/org/folio/search/service/reindex/jdbc/ReindexJdbcRepositoriesIT.java +++ b/src/test/java/org/folio/search/service/reindex/jdbc/ReindexJdbcRepositoriesIT.java @@ -75,7 +75,7 @@ void setIndexRangeFinishDate() { var mergeRange = mergeRepository.getMergeRanges().stream() .filter(range -> range.getEntityType().equals(ReindexEntityType.INSTANCE)) .findFirst(); - var uploadRange = uploadRepository.getUploadRanges(false).stream() + var uploadRange = uploadRepository.getUploadRanges().stream() .filter(range -> range.getEntityType().equals(ReindexEntityType.INSTANCE)) .findFirst(); diff --git a/src/test/java/org/folio/search/service/reindex/jdbc/SubjectRepositoryIT.java b/src/test/java/org/folio/search/service/reindex/jdbc/SubjectRepositoryIT.java index 395a24c94..865a20253 100644 --- a/src/test/java/org/folio/search/service/reindex/jdbc/SubjectRepositoryIT.java +++ b/src/test/java/org/folio/search/service/reindex/jdbc/SubjectRepositoryIT.java @@ -71,22 +71,12 @@ public String getDBSchemaName(String tenantId) { } @Test - void getUploadRanges_returnEmptyList_whenNoUploadRangesAndNotPopulate() { - // act - var ranges = repository.getUploadRanges(false); - - // assert - assertThat(ranges).isEmpty(); - } - - @Test - @Sql("/sql/populate-subjects.sql") - void getUploadRanges_returnList_whenNoUploadRangesAndNotPopulate() { + void getUploadRanges_returnList() { // arrange properties.setUploadRangeLevel(1); // act - var ranges = repository.getUploadRanges(true); + var ranges = repository.createUploadRanges(); // assert assertThat(ranges) @@ -139,7 +129,7 @@ void deleteByInstanceIds_oneSubjectRemovedAndOneInstanceCounterDecremented() { .contains( tuple("Sci-Fi", List.of( Map.of("count", 1, "shared", true, "tenantId", "consortium"), - Map.of("count", 1, "shared", false, "tenantId", "member_tenant")))); + Map.of("count", 1, "shared", false, "tenantId", "member_tenant")))); } @Test