Potential risk of easily overlooked resource leaks.
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 9.8k
- Forks
- 1.9k
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 41
Description
Hello. I have a question about feign.Response. When I look at the following code, there is code that does not return a Response object under certain conditions.
private static Response disconnectResponseBodyIfNeeded(Response response) throws IOException {
final boolean shouldDisconnectResponseBody = response.body() != null
&& response.body().length() != null
&& response.body().length() <= MAX_RESPONSE_BUFFER_SIZE;
if (!shouldDisconnectResponseBody) {
return response;
}
try {
final byte[] bodyData = Util.toByteArray(response.body().asInputStream());
return response.toBuilder().body(bodyData).build();
} finally {
ensureClosed(response.body());
}
}
For example, in a Spring Framework-based MVC application, when there is an error response, the 'Content-Length' header is missing, and in such cases, the resource is not released. Is there a reason for the existence of this code, and could it be code that is not necessary?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating disconnectResponseBodyIfNeeded and tracing feign.Response body ownership, especially when Content-Length is absent. Reproduce the Spring Framework MVC error-response case, then inspect existing response-handling tests and define the expected closure behavior before adding a regression test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, backend, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100