From bb13ac7f8c183eadc674ebd95b1d56c5b26cda90 Mon Sep 17 00:00:00 2001 From: Vigneshwar Date: Wed, 6 Mar 2024 14:30:26 +0530 Subject: [PATCH 1/2] feat: Add support for http error status code --- .../java/com/netflix/conductor/tasks/http/HttpTask.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/http-task/src/main/java/com/netflix/conductor/tasks/http/HttpTask.java b/http-task/src/main/java/com/netflix/conductor/tasks/http/HttpTask.java index d85fa24840..8a0145a25f 100644 --- a/http-task/src/main/java/com/netflix/conductor/tasks/http/HttpTask.java +++ b/http-task/src/main/java/com/netflix/conductor/tasks/http/HttpTask.java @@ -24,6 +24,7 @@ import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; +import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; @@ -175,13 +176,17 @@ protected HttpResponse httpCall(Input input) throws Exception { if (responseEntity.getStatusCode().is2xxSuccessful() && responseEntity.hasBody()) { response.body = extractBody(responseEntity.getBody()); } - response.statusCode = responseEntity.getStatusCodeValue(); response.reasonPhrase = HttpStatus.valueOf(responseEntity.getStatusCode().value()).getReasonPhrase(); response.headers = responseEntity.getHeaders(); return response; - } catch (RestClientException ex) { + } catch (HttpClientErrorException ex) { + response.headers = ex.getResponseHeaders(); + response.statusCode = ex.getStatusCode().value(); + response.reasonPhrase = ex.getStatusText(); + return response; + } catch (RestClientException ex) { LOGGER.error( String.format( "Got unexpected http response - uri: %s, vipAddress: %s", From bd1796882d38b1a5475635071cac647c0963fcb1 Mon Sep 17 00:00:00 2001 From: Vigneshwar Date: Thu, 14 Mar 2024 16:18:02 +0530 Subject: [PATCH 2/2] feat: Add handling for http failure node #SP1-952 --- .../netflix/conductor/tasks/http/HttpTask.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/http-task/src/main/java/com/netflix/conductor/tasks/http/HttpTask.java b/http-task/src/main/java/com/netflix/conductor/tasks/http/HttpTask.java index 8a0145a25f..942ae234a1 100644 --- a/http-task/src/main/java/com/netflix/conductor/tasks/http/HttpTask.java +++ b/http-task/src/main/java/com/netflix/conductor/tasks/http/HttpTask.java @@ -17,6 +17,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -118,7 +119,9 @@ public void start(WorkflowModel workflow, TaskModel task, WorkflowExecutor execu if (response.body != null) { task.setReasonForIncompletion(response.body.toString()); } else { - task.setReasonForIncompletion("No response from the remote service"); + task.setReasonForIncompletion( + Objects.requireNonNullElse( + response.reasonPhrase, "No response from the remote service")); } task.setStatus(TaskModel.Status.FAILED); } @@ -182,11 +185,11 @@ protected HttpResponse httpCall(Input input) throws Exception { response.headers = responseEntity.getHeaders(); return response; } catch (HttpClientErrorException ex) { - response.headers = ex.getResponseHeaders(); - response.statusCode = ex.getStatusCode().value(); - response.reasonPhrase = ex.getStatusText(); - return response; - } catch (RestClientException ex) { + response.headers = ex.getResponseHeaders(); + response.statusCode = ex.getStatusCode().value(); + response.reasonPhrase = ex.getStatusText(); + return response; + } catch (RestClientException ex) { LOGGER.error( String.format( "Got unexpected http response - uri: %s, vipAddress: %s",