From 53c7667d295bf2a11d64ac7e02eadb93164d6aea Mon Sep 17 00:00:00 2001 From: Marco Villeneuve Date: Wed, 29 Jan 2025 13:59:51 -0800 Subject: [PATCH 1/2] Fixes for unique saga result --- .../api/service/v1/events/EventHandlerService.java | 11 ++++++++--- .../V1.0.89__STUDENT_DATA_COLLECTION.API.sql | 3 +++ 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 api/src/main/resources/db/migration/V1.0.89__STUDENT_DATA_COLLECTION.API.sql diff --git a/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/service/v1/events/EventHandlerService.java b/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/service/v1/events/EventHandlerService.java index bb5b27532..4b174461b 100644 --- a/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/service/v1/events/EventHandlerService.java +++ b/api/src/main/java/ca/bc/gov/educ/studentdatacollection/api/service/v1/events/EventHandlerService.java @@ -60,9 +60,14 @@ public void handleReadFromTopicEvent(final Event event) throws JsonProcessingExc log.trace(EXECUTION_IS_NOT_REQUIRED, event); return; } - val saga = this.studentProcessingOrchestrator.createSaga(event.getEventPayload(), UUID.fromString(sagaData.getSdcSchoolCollectionStudent().getSdcSchoolCollectionStudentID()), UUID.fromString(sagaData.getSdcSchoolCollectionStudent().getSdcSchoolCollectionID()), ApplicationProperties.STUDENT_DATA_COLLECTION_API, null); - log.debug("Starting student processing orchestrator :: {}", saga); - this.studentProcessingOrchestrator.startSaga(saga); + try { + val saga = this.studentProcessingOrchestrator.createSaga(event.getEventPayload(), UUID.fromString(sagaData.getSdcSchoolCollectionStudent().getSdcSchoolCollectionStudentID()), UUID.fromString(sagaData.getSdcSchoolCollectionStudent().getSdcSchoolCollectionID()), ApplicationProperties.STUDENT_DATA_COLLECTION_API, null); + log.debug("Starting student processing orchestrator :: {}", saga); + this.studentProcessingOrchestrator.startSaga(saga); + }catch(Exception e){ + //This will happen occasionally when we have multiple messages hitting our pods + log.debug("Skipping processing on student {} :: saga already exists :: exception was: {}", sagaData.getSdcSchoolCollectionStudent().getSdcSchoolCollectionStudentID(), e.getMessage()); + } } } diff --git a/api/src/main/resources/db/migration/V1.0.89__STUDENT_DATA_COLLECTION.API.sql b/api/src/main/resources/db/migration/V1.0.89__STUDENT_DATA_COLLECTION.API.sql new file mode 100644 index 000000000..0a7f5665e --- /dev/null +++ b/api/src/main/resources/db/migration/V1.0.89__STUDENT_DATA_COLLECTION.API.sql @@ -0,0 +1,3 @@ +ALTER TABLE SDC_SAGA + ADD CONSTRAINT UNQ_SDC_SCHOOL_COLLECTION_STUDENT_ID_SAGA_NAME + UNIQUE (SDC_SCHOOL_COLLECTION_STUDENT, SAGA_NAME); From e6f5d0baa4c195d6582333eaafc152950f50fb1a Mon Sep 17 00:00:00 2001 From: Marco Villeneuve Date: Wed, 29 Jan 2025 14:06:22 -0800 Subject: [PATCH 2/2] Fixes for unique saga result --- .../db/migration/V1.0.89__STUDENT_DATA_COLLECTION.API.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/resources/db/migration/V1.0.89__STUDENT_DATA_COLLECTION.API.sql b/api/src/main/resources/db/migration/V1.0.89__STUDENT_DATA_COLLECTION.API.sql index 0a7f5665e..b07430ae2 100644 --- a/api/src/main/resources/db/migration/V1.0.89__STUDENT_DATA_COLLECTION.API.sql +++ b/api/src/main/resources/db/migration/V1.0.89__STUDENT_DATA_COLLECTION.API.sql @@ -1,3 +1,3 @@ ALTER TABLE SDC_SAGA ADD CONSTRAINT UNQ_SDC_SCHOOL_COLLECTION_STUDENT_ID_SAGA_NAME - UNIQUE (SDC_SCHOOL_COLLECTION_STUDENT, SAGA_NAME); + UNIQUE (SDC_SCHOOL_COLLECTION_STUDENT_ID, SAGA_NAME);