From 144ad09096b1a0cf0539c3fd4b1db22edb4074e0 Mon Sep 17 00:00:00 2001 From: NThakur4 <nthakur4@slb.com> Date: Wed, 2 Mar 2022 12:05:40 -0600 Subject: [PATCH] retry entire batch if all record indexing is failing --- .../osdu/indexer/service/IndexerServiceImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java index e23773e09..4027d0ef3 100644 --- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java +++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/service/IndexerServiceImpl.java @@ -430,6 +430,8 @@ public class IndexerServiceImpl implements IndexerService { List<String> failureRecordIds = new LinkedList<>(); if (bulkRequest.numberOfActions() == 0) return failureRecordIds; + int failedRequestStatus = 200; + String failedRequestMessage = ""; try { BulkResponse bulkResponse = restClient.bulk(bulkRequest, RequestOptions.DEFAULT); @@ -447,6 +449,10 @@ public class IndexerServiceImpl implements IndexerService { if (RETRY_ELASTIC_EXCEPTION.contains(bulkItemResponse.status())) { failureRecordIds.add(bulkItemResponse.getId()); } + if (Strings.isNullOrEmpty(failedRequestMessage)) { + failedRequestMessage = failure.getMessage(); + failedRequestStatus = failure.getStatus().getStatus(); + } failedResponses++; } else { succeededResponses++; @@ -456,6 +462,9 @@ public class IndexerServiceImpl implements IndexerService { if (!bulkFailures.isEmpty()) this.jaxRsDpsLog.warning(bulkFailures); jaxRsDpsLog.info(String.format("records in elasticsearch service bulk request: %s | successful: %s | failed: %s", bulkRequest.numberOfActions(), succeededResponses, failedResponses)); + + // retry entire message if all records are failing + if (bulkRequest.numberOfActions() == failedResponses) throw new AppException(failedRequestStatus, "Elastic error", failedRequestMessage); } catch (IOException e) { // throw explicit 504 for IOException throw new AppException(HttpStatus.SC_GATEWAY_TIMEOUT, "Elastic error", "Request cannot be completed in specified time.", e); -- GitLab