Affects: spring web 6.1.11

it's not really clear when a ResourceAccessException (wrapping an IOException) or its base class RestClientException (which can also wrap an IOException) is thrown in org.springframework.web.client.DefaultRestClient.

eg. when calling responseWrapper.hasEmptyMessageBody()in readWithMessageConverters and thegetBody() call to an underlying ReactorNettyClientResponse does timeout (wrapped into an IOException) - i would expect a ResourceAccessException.

 /**
 * Exception thrown when an I/O error occurs.
 *
 * @author Arjen Poutsma
 * @since 3.0
 */
public class ResourceAccessException extends RestClientException {

from stacktrace:

2024-09-02 03:46:34.003 UTC WARN [svm25641,dynatrace.launcher] [qtp242113956-122375] ClusterAppManifestsFetcherImpl: Cannot fetch app icon from cluster endpoint https://svm25641.apps.internal.dynatrace.com/platform-internal/cluster-internal/manifest/dynatrace.classic.databases/icon
org.springframework.web.client.RestClientException: Error while extracting response for type [org.springframework.core.io.Resource] and content type [image/png]
    at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:240)
    at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.readBody(DefaultRestClient.java:685)
    at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.toEntityInternal(DefaultRestClient.java:655)
    at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.toEntity(DefaultRestClient.java:644)
Caused by: java.io.IOException: null
    at org.springframework.http.client.ReactorNettyClientRequest.convertException(ReactorNettyClientRequest.java:143)
    at org.springframework.http.client.ReactorNettyClientResponse.getBody(ReactorNettyClientResponse.java:87)
    at org.springframework.web.client.DefaultRestClient$DefaultConvertibleClientHttpResponse.getBody(DefaultRestClient.java:748)
    at org.springframework.web.client.IntrospectingClientHttpResponse.hasEmptyMessageBody(IntrospectingClientHttpResponse.java:83)
    at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:203)
    ... 176 common frames omitted
Caused by: io.netty.handler.timeout.ReadTimeoutException: null

Comment From: rstoyanchev

I think ResourceAccessException is about early I/O issues that result from request execution, and that does not include I/O errors from handling the response.

Comment From: spring-projects-issues

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

Comment From: spring-projects-issues

Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.