ServerHttpResponse
sets the response statusCode
correctly
#5884
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
It seems like Armeria's spring integration response
ServerHttpResponse
is not always set correctly.In detail, it seems like we can confirm that
getStatusCode
returnsUNKNOWN
unlesssetStatusCode
is called explicitly.When a successful response is returned, we refer to the response headers used. This is similar to the upstream implementation which falls back to the response which is actually returned.
https://github.com/spring-projects/spring-framework/blob/d2ea5b444812b4c55e00fecb7b6451073677061d/spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpResponse.java#L72-L76
When
Armeria
returns a response instead ofSpring
, the response is never committed. Now, thedoOnCancel
is listened to and the response is committed accordingly.Modifications:
ArmeriaServerHttpResponse#getStatusCode
now also checks the response headers when returning a valuedoOnCancel
now also tries to set the response code and commit theArmeriaServerHttpResponse
Result: