diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusProcessingUpdateService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusProcessingUpdateService.java index 2e5151f5c..1ff6dc088 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusProcessingUpdateService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusProcessingUpdateService.java @@ -115,7 +115,22 @@ public class FileStatusProcessingUpdateService { }); } + + public void requeueOCROrMarkFailed(String dossierId, String fileId, FileErrorInfo fileErrorInfo) { + + var fileEntity = fileStatusPersistenceService.getStatus(fileId); + if (fileEntity.getProcessingErrorCounter() > settings.getMaxErrorRetries()) { + ocrFailed(dossierId, fileId, fileErrorInfo); + } else { + fileStatusService.setStatusOcrProcessing(fileId, + fileEntity.getProcessingStatus().equals(ProcessingStatus.OCR_PROCESSING) ? fileEntity.getProcessingErrorCounter() + 1 : 0); + fileStatusService.addToOcrQueue(dossierId, fileId, 2); + } + } + + public void ocrProcessingUpdateOnly(String fileId) { + var fileEntity = fileStatusPersistenceService.getStatus(fileId); retryTemplate.execute(retryContext -> { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java index 50152ea51..8d5cb009c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java @@ -456,7 +456,7 @@ public class FileStatusService { } - private void addToOcrQueue(String dossierId, String fileId, int priority) { + public void addToOcrQueue(String dossierId, String fileId, int priority) { rabbitTemplate.convertAndSend(MessagingConfiguration.OCR_REQUEST_QUEUE, new DocumentRequest(dossierId, fileId), message -> { message.getMessageProperties().setPriority(priority); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/OCRProcessingMessageReceiver.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/OCRProcessingMessageReceiver.java index ef9168309..aae0f6861 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/OCRProcessingMessageReceiver.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/queue/OCRProcessingMessageReceiver.java @@ -76,7 +76,7 @@ public class OCRProcessingMessageReceiver { String errorMessage = failedMessage.getMessageProperties().getHeader(MessagingConfiguration.X_ERROR_INFO_HEADER); OffsetDateTime timestamp = failedMessage.getMessageProperties().getHeader(MessagingConfiguration.X_ERROR_INFO_TIMESTAMP_HEADER); timestamp = timestamp != null ? timestamp : OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); - fileStatusProcessingUpdateService.ocrFailed(ocrRequestMessage.getDossierId(), + fileStatusProcessingUpdateService.requeueOCROrMarkFailed(ocrRequestMessage.getDossierId(), ocrRequestMessage.getFileId(), new FileErrorInfo(errorMessage, MessagingConfiguration.OCR_DLQ, "ocr-service", timestamp)); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yaml index 369f33352..ca4607034 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application-dev.yaml @@ -39,18 +39,18 @@ fforesight: auth-server-url: 'http://localhost:8080' jobs: enabled: true - datasource: - url: jdbc:postgresql://${PSQL_HOST:localhost}:${PSQL_PORT:25432}/${PSQL_DATABASE:tenantmanager}?ApplicationName=${spring.application.name:}-scheduler&cachePrepStmts=true&useServerPrepStmts=true&rewriteBatchedStatements=true - driverClassName: org.postgresql.Driver - username: ${PSQL_USERNAME:tenantmanager} - password: ${PSQL_PASSWORD:r3dact3d} - platform: org.hibernate.dialect.PostgreSQL95Dialect - hikari: - maximumPoolSize: 2 - data-source-properties: - cachePrepStmts: true - prepStmtCacheSize: 1000 - prepStmtCacheSqlLimit: 2048 +# datasource: +# url: jdbc:postgresql://${PSQL_HOST:localhost}:${PSQL_PORT:5432}/${PSQL_DATABASE:tenantmanager}?ApplicationName=${spring.application.name:}-scheduler&cachePrepStmts=true&useServerPrepStmts=true&rewriteBatchedStatements=true +# driverClassName: org.postgresql.Driver +# username: ${PSQL_USERNAME:tenantmanager} +# password: ${PSQL_PASSWORD:r3dact3d} +# platform: org.hibernate.dialect.PostgreSQL95Dialect +# hikari: +# maximumPoolSize: 2 +# data-source-properties: +# cachePrepStmts: true +# prepStmtCacheSize: 1000 +# prepStmtCacheSqlLimit: 2048 management: tracing: diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml index 0af757fe1..b9545234c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/application.yaml @@ -125,6 +125,7 @@ fforesight: keycloak: ignored-endpoints: [ '/redaction-gateway-v1','/actuator/health/**', '/redaction-gateway-v1/async/download/with-ott/**', '/internal-api/**', '/redaction-gateway-v1/docs/swagger-ui', + '/redaction-gateway-v1/**', '/redaction-gateway-v1/docs/**','/redaction-gateway-v1/docs', '/api', '/api/','/api/docs/**','/api/docs','/api/docs/swagger-ui' ] enabled: true