@Override public Throwable extractFailureCauseFromBulkItemResponse(BulkItemResponse bulkItemResponse) { if (!bulkItemResponse.isFailed()) { return null; } else { return new RuntimeException(bulkItemResponse.getFailureMessage()); } }
private boolean isLogicalError(BulkItemResponse bulkItemResponse) { String failureMessage = bulkItemResponse.getFailureMessage(); return failureMessage.contains("IllegalArgumentException") || failureMessage.contains("illegal_argument_exception") || failureMessage.contains("MapperParsingException") || failureMessage.contains("mapper_parsing_exception"); }
private void processFailBulkResponse(BulkResponse bulkResponse, boolean hasParent) { for (BulkItemResponse response : bulkResponse.getItems()) { if (!response.isFailed()) { continue; } if (response.getFailure().getStatus() == RestStatus.NOT_FOUND) { logger.warn(response.getFailureMessage()); } else { logger.error("全量导入数据有误 {}", response.getFailureMessage()); throw new RuntimeException("全量数据 etl 异常: " + response.getFailureMessage()); } } }
private void checkForBulkUpdateFailure(BulkResponse bulkResponse) { if (bulkResponse.hasFailures()) { Map<String, String> failedDocuments = new HashMap<>(); for (BulkItemResponse item : bulkResponse.getItems()) { if (item.isFailed()) failedDocuments.put(item.getId(), item.getFailureMessage()); } throw new ElasticsearchException( "Bulk indexing has failures. Use ElasticsearchException.getFailedDocuments() for detailed messages [" + failedDocuments + "]", failedDocuments); } }
/** * 批量提交 * * @param bulkRequestBuilder * @return */ private static boolean commitBulkRequest(BulkRequestBuilder bulkRequestBuilder) { if (bulkRequestBuilder.numberOfActions() > 0) { BulkResponse response = bulkRequestBuilder.execute().actionGet(); if (response.hasFailures()) { for (BulkItemResponse itemResponse : response.getItems()) { if (!itemResponse.isFailed()) { continue; } if (itemResponse.getFailure().getStatus() == RestStatus.NOT_FOUND) { logger.warn(itemResponse.getFailureMessage()); } else { logger.error("ES sync commit error: {}", itemResponse.getFailureMessage()); } } } return !response.hasFailures(); } return true; }
response.getType(), response.getIndex(), response.getFailureMessage() ); errorString.append( response.getFailureMessage() ).append( "\n" );
@Override public void afterBulk(long executionId, BulkRequest request, BulkResponse response) { stopProfiler(request); List<DocId> successDocIds = new ArrayList<>(); for (BulkItemResponse item : response.getItems()) { if (item.isFailed()) { LOGGER.error("index [{}], type [{}], id [{}], message [{}]", item.getIndex(), item.getType(), item.getId(), item.getFailureMessage()); } else { result.incrementSuccess(); successDocIds.add(new DocId(item.getIndex(), item.getType(), item.getId())); } } indexingListener.onSuccess(successDocIds); }
log.debug("Document id {} was malformed with error {}", bulkItemResponse.getId(), bulkItemResponse.getFailureMessage()); break; log.warn("Document id {} was malformed with error {}", bulkItemResponse.getId(), bulkItemResponse.getFailureMessage()); break;
log.error("Failed to execute ES query {}", response.getFailureMessage()); actualFailure = true;
if (((IndexResponse) response).isCreated()) result.getCreated().add(id); String err = r.getFailureMessage(); if (err != null) { result.getErrors().put(id, err);
if ( item.isFailed() ) { logDetailed( item.getFailureMessage() ); errorsInBatch++; if ( getStepMeta().isDoingErrorHandling() ) { rejectRow( item.getItemId(), item.getFailureMessage() );
public String buildFailureMessage() { StringBuilder sb = new StringBuilder(); sb.append("failure in bulk execution:"); for (int i = 0; i < responses.length; i++) { BulkItemResponse response = responses[i]; if (response.isFailed()) { sb.append("\n[").append(i) .append("]: index [").append(response.getIndex()).append("], type [") .append(response.getType()).append("], id [").append(response.getId()) .append("], message [").append(response.getFailureMessage()).append("]"); } } return sb.toString(); }
@Override public void afterBulk(long executionId, BulkRequest request, BulkResponse response) { logger.trace("Executed bulk request with [{}] requests", request.numberOfActions()); if (response.hasFailures()) { final int[] failures = {0}; response.iterator().forEachRemaining(bir -> { if (bir.isFailed()) { failures[0]++; logger.debug("Error caught for [{}]/[{}]/[{}]: {}", bir.getIndex(), bir.getType(), bir.getId(), bir.getFailureMessage()); } }); logger.warn("Got [{}] failures of [{}] requests", failures[0], request.numberOfActions()); } }
@Override public void afterBulk(long executionId, BulkRequest request, BulkResponse response) { logger.trace("Executed bulk request with [{}] requests", request.numberOfActions()); if (response.hasFailures()) { final int[] failures = {0}; response.iterator().forEachRemaining(bir -> { if (bir.isFailed()) { failures[0]++; logger.debug("Error caught for [{}]/[{}]/[{}]: {}", bir.getIndex(), bir.getType(), bir.getId(), bir.getFailureMessage()); } }); logger.warn("Got [{}] failures of [{}] requests", failures[0], request.numberOfActions()); } }
@Override public void afterBulk(long executionId, BulkRequest request, BulkResponse response) { logger.trace("Executed bulk request with [{}] requests", request.numberOfActions()); if (response.hasFailures()) { final int[] failures = {0}; response.iterator().forEachRemaining(bir -> { if (bir.isFailed()) { failures[0]++; logger.debug("Error caught for [{}]/[{}]/[{}]: {}", bir.getIndex(), bir.getType(), bir.getId(), bir.getFailureMessage()); } }); logger.warn("Got [{}] failures of [{}] requests", failures[0], request.numberOfActions()); } }
DocWriteResponse response = r.getResponse(); if (response.getResult() == DocWriteResponse.Result.CREATED) result.created.add(id); String err = r.getFailureMessage(); if (err != null) { result.errors.put(id, err);
private void setupElasticsearchToFail() throws IOException { final String errorMessage = "error message"; final Exception cause = new Exception("test exception"); final boolean isFailed = true; final int itemID = 0; // define the item failure BulkItemResponse.Failure failure = mock(BulkItemResponse.Failure.class); when(failure.getCause()).thenReturn(cause); when(failure.getMessage()).thenReturn(errorMessage); // define the item level response BulkItemResponse itemResponse = mock(BulkItemResponse.class); when(itemResponse.isFailed()).thenReturn(isFailed); when(itemResponse.getItemId()).thenReturn(itemID); when(itemResponse.getFailure()).thenReturn(failure); when(itemResponse.getFailureMessage()).thenReturn("error message"); List<BulkItemResponse> itemsResponses = Collections.singletonList(itemResponse); // define the bulk response to indicate failure BulkResponse response = mock(BulkResponse.class); when(response.iterator()).thenReturn(itemsResponses.iterator()); when(response.hasFailures()).thenReturn(isFailed); // have the client return the mock response when(highLevelClient.bulk(any(BulkRequest.class))).thenReturn(response); }
/** * Handles the {@link BulkResponse} received from Elasticsearch. * @param bulkResponse The response received from Elasticsearch. * @param documents The documents included in the bulk request. * @param results The writer results. */ private void handleBulkResponse(BulkResponse bulkResponse, List<Indexable> documents, BulkDocumentWriterResults<D> results) { if (bulkResponse.hasFailures()) { // interrogate the response to distinguish between those that succeeded and those that failed for(BulkItemResponse response: bulkResponse) { if(response.isFailed()) { // request failed D failed = getDocument(response.getItemId()); Exception cause = response.getFailure().getCause(); String message = response.getFailureMessage(); results.addFailure(failed, cause, message); } else { // request succeeded D success = getDocument(response.getItemId()); success.setDocumentID(response.getResponse().getId()); results.addSuccess(success); } } } else { // all requests succeeded for(Indexable success: documents) { results.addSuccess(success.document); } } }
protected void doBulkRequest(BulkRequest bulkRequest) { BulkResponse response = getClient().bulk(bulkRequest).actionGet(); if (response.hasFailures()) { for (BulkItemResponse bulkResponse : response) { if (bulkResponse.isFailed()) { LOGGER.error("Failed to index %s (message: %s)", bulkResponse.getId(), bulkResponse.getFailureMessage()); } } throw new VertexiumException("Could not add element."); } }
protected void doBulkRequest(BulkRequest bulkRequest) { BulkResponse response = getClient().bulk(bulkRequest).actionGet(); if (response.hasFailures()) { for (BulkItemResponse bulkResponse : response) { if (bulkResponse.isFailed()) { LOGGER.error("Failed to index %s (message: %s)", bulkResponse.getId(), bulkResponse.getFailureMessage()); } } throw new VertexiumException("Could not add element."); } }