From a3c660e47528e5e622c753127a05f81d6d01a0b7 Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Sat, 11 Oct 2025 12:43:02 +0100 Subject: [PATCH 01/10] DMP-5287 Create new index to improve retention performance Added new index --- .../resources/db/migration/common/V1_490__create_new_indexes.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/resources/db/migration/common/V1_490__create_new_indexes.sql diff --git a/src/main/resources/db/migration/common/V1_490__create_new_indexes.sql b/src/main/resources/db/migration/common/V1_490__create_new_indexes.sql new file mode 100644 index 00000000000..5630b6e3e33 --- /dev/null +++ b/src/main/resources/db/migration/common/V1_490__create_new_indexes.sql @@ -0,0 +1 @@ +CREATE INDEX IF NOT EXISTS court_case_retention_updated_and_retries_idx ON darts.court_case (is_retention_updated, retention_retries); From 8703234cf6979c7d5727e0021515d679d303ca44 Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Thu, 23 Oct 2025 09:27:34 +0100 Subject: [PATCH 02/10] DMP-5287 Create new index to improve retention performance Added new index --- .../darts/cases/repository/CaseRepositoryIntTest.java | 8 ++++---- .../gov/hmcts/darts/common/repository/CaseRepository.java | 6 +++--- .../db/migration/common/V1_490__create_new_indexes.sql | 1 - .../db/migration/postgres/V1_486__create_new_indexes.sql | 1 + 4 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 src/main/resources/db/migration/common/V1_490__create_new_indexes.sql create mode 100644 src/main/resources/db/migration/postgres/V1_486__create_new_indexes.sql diff --git a/src/integrationTest/java/uk/gov/hmcts/darts/cases/repository/CaseRepositoryIntTest.java b/src/integrationTest/java/uk/gov/hmcts/darts/cases/repository/CaseRepositoryIntTest.java index 4aa8d63da8f..2a8968a6611 100644 --- a/src/integrationTest/java/uk/gov/hmcts/darts/cases/repository/CaseRepositoryIntTest.java +++ b/src/integrationTest/java/uk/gov/hmcts/darts/cases/repository/CaseRepositoryIntTest.java @@ -37,7 +37,7 @@ class CaseRepositoryIntTest extends IntegrationBase { private CaseRepository caseRepository; @Test - void findByIsRetentionUpdatedTrueAndRetentionRetriesLessThan_ReturnsResults() { + void findByIsRetentionUpdatedTrueAndRetentionRetriesLessThan_ShouldReturnsResults() { // given caseStub.createAndSaveCourtCase(courtCase -> { courtCase.setRetentionUpdated(true); @@ -69,7 +69,7 @@ void findByIsRetentionUpdatedTrueAndRetentionRetriesLessThan_ReturnsResults() { } @Test - void findIdsByIsRetentionUpdatedTrueAndRetentionRetriesLessThan_caseHasNoAssocaitedCaseRetentionEntity_shouldNotReturn() { + void findIdsByIsRetentionUpdatedTrueAndRetentionRetriesLessThan_ShouldNotReturn_WhenCaseHasNoAssociatedCaseRetentionEntity() { // given caseStub.createAndSaveCourtCase(courtCase -> { courtCase.setRetentionUpdated(true); @@ -82,7 +82,7 @@ void findIdsByIsRetentionUpdatedTrueAndRetentionRetriesLessThan_caseHasNoAssocai } @Test - void findIdsByIsRetentionUpdatedTrueAndRetentionRetriesLessThan_oneCaseHasMultipleRetentionObjects_shouldOnlyReturnIdOnce() { + void findIdsByIsRetentionUpdatedTrueAndRetentionRetriesLessThan_ShouldOnlyReturnIdOnce_WhereOneCaseHasMultipleRetentionObjects() { // given var matchingCase = caseStub.createAndSaveCourtCase(courtCase -> { courtCase.setRetentionUpdated(true); @@ -106,7 +106,7 @@ void findIdsByIsRetentionUpdatedTrueAndRetentionRetriesLessThan_oneCaseHasMultip @Test - void findCasesIdsNeedingCaseDocumentGenerated_ReturnsMatchingCases() { + void findCasesIdsNeedingCaseDocumentGenerated_ShouldReturnsMatchingCases() { // given caseStub.createAndSaveCourtCase(courtCase -> { courtCase.setClosed(true); diff --git a/src/main/java/uk/gov/hmcts/darts/common/repository/CaseRepository.java b/src/main/java/uk/gov/hmcts/darts/common/repository/CaseRepository.java index 2231606a677..b537eac996c 100644 --- a/src/main/java/uk/gov/hmcts/darts/common/repository/CaseRepository.java +++ b/src/main/java/uk/gov/hmcts/darts/common/repository/CaseRepository.java @@ -54,12 +54,12 @@ AND NOT EXISTS (select 1 from CaseRetentionEntity cre """) List findOpenCasesToClose(OffsetDateTime cutoffDate, Limit limit); + // Must have join to case retention to ensure all cases returned have CaseRetentionEntity @Query(""" SELECT distinct cc.id FROM CourtCaseEntity cc - JOIN cc.caseRetentionEntities cr - WHERE cr is not null - AND cc.isRetentionUpdated = true + JOIN cc.caseRetentionEntities cr + WHERE cc.isRetentionUpdated = true AND cc.retentionRetries < :maxRetentionRetries ORDER BY cc.id ASC """) diff --git a/src/main/resources/db/migration/common/V1_490__create_new_indexes.sql b/src/main/resources/db/migration/common/V1_490__create_new_indexes.sql deleted file mode 100644 index 5630b6e3e33..00000000000 --- a/src/main/resources/db/migration/common/V1_490__create_new_indexes.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE INDEX IF NOT EXISTS court_case_retention_updated_and_retries_idx ON darts.court_case (is_retention_updated, retention_retries); diff --git a/src/main/resources/db/migration/postgres/V1_486__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_486__create_new_indexes.sql new file mode 100644 index 00000000000..428c964c3c4 --- /dev/null +++ b/src/main/resources/db/migration/postgres/V1_486__create_new_indexes.sql @@ -0,0 +1 @@ +CREATE INDEX IF NOT EXISTS cr_rr_idx ON case_retention (retention_retries) WHERE is_retention_updated; From 061f4aba12ffa8f59300f75ba56ad074277c43cc Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:05:58 +0000 Subject: [PATCH 03/10] DMP-5287 Create new index to improve retention performance Added new index --- ...486__create_new_indexes.sql => V1_488__create_new_indexes.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/db/migration/postgres/{V1_486__create_new_indexes.sql => V1_488__create_new_indexes.sql} (100%) diff --git a/src/main/resources/db/migration/postgres/V1_486__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_488__create_new_indexes.sql similarity index 100% rename from src/main/resources/db/migration/postgres/V1_486__create_new_indexes.sql rename to src/main/resources/db/migration/postgres/V1_488__create_new_indexes.sql From 95d15cb558aa64d11b7cdb28369d985c7dc94a7c Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Wed, 29 Oct 2025 14:05:55 +0000 Subject: [PATCH 04/10] DMP-5287 Create new index to improve retention performance Added new index --- ...8__create_new_indexes.sql => V1_489__create_new_indexes.sql} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/resources/db/migration/postgres/{V1_488__create_new_indexes.sql => V1_489__create_new_indexes.sql} (62%) diff --git a/src/main/resources/db/migration/postgres/V1_488__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_489__create_new_indexes.sql similarity index 62% rename from src/main/resources/db/migration/postgres/V1_488__create_new_indexes.sql rename to src/main/resources/db/migration/postgres/V1_489__create_new_indexes.sql index 428c964c3c4..0750bdb27c3 100644 --- a/src/main/resources/db/migration/postgres/V1_488__create_new_indexes.sql +++ b/src/main/resources/db/migration/postgres/V1_489__create_new_indexes.sql @@ -1 +1 @@ -CREATE INDEX IF NOT EXISTS cr_rr_idx ON case_retention (retention_retries) WHERE is_retention_updated; +CREATE INDEX IF NOT EXISTS cr_rr_idx ON case_retention (retention_retries); From a42396fea8cf190f18d48591167448cfee7539cd Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Fri, 7 Nov 2025 17:39:12 +0000 Subject: [PATCH 05/10] DMP-5287 Create new index to improve retention performance Added new retention index --- .../db/migration/postgres/V1_489__create_new_indexes.sql | 1 - .../db/migration/postgres/V1_492__create_new_indexes.sql | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 src/main/resources/db/migration/postgres/V1_489__create_new_indexes.sql create mode 100644 src/main/resources/db/migration/postgres/V1_492__create_new_indexes.sql diff --git a/src/main/resources/db/migration/postgres/V1_489__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_489__create_new_indexes.sql deleted file mode 100644 index 0750bdb27c3..00000000000 --- a/src/main/resources/db/migration/postgres/V1_489__create_new_indexes.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE INDEX IF NOT EXISTS cr_rr_idx ON case_retention (retention_retries); diff --git a/src/main/resources/db/migration/postgres/V1_492__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_492__create_new_indexes.sql new file mode 100644 index 00000000000..e73a9cd4c28 --- /dev/null +++ b/src/main/resources/db/migration/postgres/V1_492__create_new_indexes.sql @@ -0,0 +1 @@ +CREATE INDEX cc_rr_idx ON court_case (retention_retries) WHERE is_retention_updated; From d460f2074d58b11fe7fdc6a090d12f085b9e6920 Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Tue, 20 Jan 2026 17:04:49 +0000 Subject: [PATCH 06/10] DMP-5287 Create new index to improve retention performance Added new retention index --- ...492__create_new_indexes.sql => V1_502__create_new_indexes.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/db/migration/postgres/{V1_492__create_new_indexes.sql => V1_502__create_new_indexes.sql} (100%) diff --git a/src/main/resources/db/migration/postgres/V1_492__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_502__create_new_indexes.sql similarity index 100% rename from src/main/resources/db/migration/postgres/V1_492__create_new_indexes.sql rename to src/main/resources/db/migration/postgres/V1_502__create_new_indexes.sql From b892398ab34e568b689c3b1178121e2dd17f11c8 Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:49:38 +0000 Subject: [PATCH 07/10] DMP-5287 Create new index to improve retention performance Added new retention index --- .../db/migration/postgres/V1_502__create_new_indexes.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/db/migration/postgres/V1_502__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_502__create_new_indexes.sql index e73a9cd4c28..c1e98c5de41 100644 --- a/src/main/resources/db/migration/postgres/V1_502__create_new_indexes.sql +++ b/src/main/resources/db/migration/postgres/V1_502__create_new_indexes.sql @@ -1 +1 @@ -CREATE INDEX cc_rr_idx ON court_case (retention_retries) WHERE is_retention_updated; +CREATE INDEX cc_rr_idx ON court_case (retention_retries) WHERE is_retention_updated = true; From 17b3e6dca577a7dfe50f77911911371324814742 Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Wed, 11 Mar 2026 15:07:59 +0000 Subject: [PATCH 08/10] DMP-5287 Create new index to improve retention performance Updated migration number --- ...502__create_new_indexes.sql => V1_506__create_new_indexes.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/db/migration/postgres/{V1_502__create_new_indexes.sql => V1_506__create_new_indexes.sql} (100%) diff --git a/src/main/resources/db/migration/postgres/V1_502__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_506__create_new_indexes.sql similarity index 100% rename from src/main/resources/db/migration/postgres/V1_502__create_new_indexes.sql rename to src/main/resources/db/migration/postgres/V1_506__create_new_indexes.sql From d7e05b52d80d9c24a5dc08423b1c23d74495e471 Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Wed, 11 Mar 2026 15:08:23 +0000 Subject: [PATCH 09/10] DMP-5287 Create new index to improve retention performance Added if not exists --- .../db/migration/postgres/V1_506__create_new_indexes.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/db/migration/postgres/V1_506__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_506__create_new_indexes.sql index c1e98c5de41..22a4bb3d7b9 100644 --- a/src/main/resources/db/migration/postgres/V1_506__create_new_indexes.sql +++ b/src/main/resources/db/migration/postgres/V1_506__create_new_indexes.sql @@ -1 +1 @@ -CREATE INDEX cc_rr_idx ON court_case (retention_retries) WHERE is_retention_updated = true; +CREATE INDEX IF NOT EXISTS cc_rr_idx ON court_case (retention_retries) WHERE is_retention_updated = true; From a74bdacb2d725451cd89d10fa8d03f6aff395797 Mon Sep 17 00:00:00 2001 From: karen-hedges <133129444+karen-hedges@users.noreply.github.com> Date: Wed, 11 Mar 2026 15:09:09 +0000 Subject: [PATCH 10/10] DMP-5287 Create new index to improve retention performance Updated migration number --- ...506__create_new_indexes.sql => V1_507__create_new_indexes.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/db/migration/postgres/{V1_506__create_new_indexes.sql => V1_507__create_new_indexes.sql} (100%) diff --git a/src/main/resources/db/migration/postgres/V1_506__create_new_indexes.sql b/src/main/resources/db/migration/postgres/V1_507__create_new_indexes.sql similarity index 100% rename from src/main/resources/db/migration/postgres/V1_506__create_new_indexes.sql rename to src/main/resources/db/migration/postgres/V1_507__create_new_indexes.sql