Netty - Blocked state when http status 500 is received from the host

24 views
Skip to first unread message

nishan...@gmail.com

unread,
Aug 4, 2017, 11:11:33 AM8/4/17
to Netty discussions
We are having akka - camel - netty environment, while communicating with the host, akka default dispacher sends multiple requests to the host.
For example akka-default-dispacher-1 sends two requests Request1 and Request2.

The Problem: The host is a standard banking service provider and sends 500 status code when it wants to send error response to the client along with the SOAP response message.

The response is then interpreted in the following fashion:
if (errorCause instanceof NettyHttpOperationFailedException) {
NettyHttpOperationFailedException exception = (NettyHttpOperationFailedException) error.getCause();
if (exception != null) {
Integer statusCode = exception.getStatusCode();
if (statusCode != null && statusCode == 500) {
errorFlag = true;
HttpResponse httpResponse = (HttpResponse) exception.getResponse();
if (httpResponse != null) {
ChannelBuffer responseBuffer = httpResponse.getContent();
final byte[] body = responseBuffer.array();
String errorBody = new String(body);
}
}
}
}

When host responds with http status 500 for Request1, netty supposedly closes the channel and the response for Request2 is not collected.

As a solution to this we found two methods to override this behaviour:
1. Set the throwExceptionOnFailure to false (true by default), so that netty does not do any error handling and response for Request2 is captured.
2.Set okStatusCodeRange=200-500, so that 500 response is not considered as error response and netty error handling for 500 is supressed.

However, both the above approaches have their own flaws, for instance if we receive http response 400 or 404 or 405 for approach (2), they will be considered as good responses and will not be handled.

Desired approach: Netty should not close channel when it receives 500 response Or There should be a provision to suppress specific http response code and not the entire range.
Or any other approach or configuration that can done to resolve the above issue.


Norman Maurer

unread,
Aug 4, 2017, 11:15:20 AM8/4/17
to ne...@googlegroups.com
You will need to ask on the camel mailinglist as this is a camel question and not a netty question. Netty itself does not close anything, it only does what the user of it tells it, which seems to be camel here.



--
You received this message because you are subscribed to the Google Groups "Netty discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to netty+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/netty/c6b6d720-f883-413d-b10d-1dafe7b2a21c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages