<p>I have currently deployed a small java application to my local Kubernetes cluster. I'm currently trying to test my application by port-forwarding the pod and then using postman to test my Controllers.</p>
<p>However, when I am testing I am getting a read timeout exception. No matter how long I set my timeout to be it will wait the entirety of the time and throw the exception.</p>
<p>This is strange because this only happens when it is running from my Kubernetes cluster and not when running the application locally. I can see this exception is thrown from a HttpClient I am using to retrieve some data from an External third-party API:</p>
<pre><code> @Client(value = &quot;${rawg.api.url}&quot;)
public interface RawgClient {

    @Get(value = &quot;/{gameSlug}/${rawg.api.key}&quot;, produces = APPLICATION_JSON)
    HttpResponse&lt;RawgClientGameInfoResponse&gt; retrieveGameInfo(@PathVariable(&quot;gameSlug&quot;) String gameSlug);

    @Get(value = &quot;${rawg.api.key}&amp;search={searchTerm}&quot;,produces = APPLICATION_JSON)
    HttpResponse&lt;RawgClientSearchResponse&gt; retrieveGameSearchByName(@PathVariable(&quot;searchTerm&quot;) String searchTerm);
}
</code></pre>
<p>However, When I check the logs after the exception is thrown I can see that the information was retrieved from the client:</p>
<pre><code>    k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:15.220 [default-nioEventLoopGroup-1-2] TRACE i.m.c.e.PropertySourcePropertyResolver - Resolved value [?key=****] for property: rawg.api.key
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.242 [default-nioEventLoopGroup-1-2] ERROR i.m.r.intercept.RecoveryInterceptor - Type [com.agl.client.RawgClient$Intercepted] executed with error: Read Timeout
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter io.micronaut.http.client.exceptions.ReadTimeoutException: Read Timeout
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.http.client.exceptions.ReadTimeoutException.&lt;clinit&gt;(ReadTimeoutException.java:26)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.http.client.netty.DefaultHttpClient.lambda$exchangeImpl$45(DefaultHttpClient.java:1380)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.reactive.reactor.instrument.ReactorSubscriber.onError(ReactorSubscriber.java:64)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:280)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:419)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.reactive.reactor.instrument.ReactorSubscriber.onNext(ReactorSubscriber.java:57)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.reactive.reactor.instrument.ReactorSubscriber.onNext(ReactorSubscriber.java:57)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:271)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:286)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.reactive.reactor.instrument.ReactorInstrumentation.lambda$init$0(ReactorInstrumentation.java:62)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.lang.Thread.run(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.257 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext - Finding candidate beans for type: RawgClient
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.259 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class com.agl.client.RawgClient$Intercepted null Definition: com.agl.client.RawgClient$Intercepted
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.259 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext - Finalized bean definitions candidates: [Definition: com.agl.client.RawgClient$Intercepted]
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.260 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class com.agl.client.RawgClient$Intercepted null Definition: com.agl.client.RawgClient$Intercepted
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.260 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext - Qualifying bean [RawgClient] for qualifier: @Fallback
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.263 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext - No qualifying beans of type [RawgClient] found for qualifier: @Fallback
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.276 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext - Finding candidate beans for type: ExceptionHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.290 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.ContentLengthExceededHandler null Definition: io.micronaut.http.server.exceptions.ContentLengthExceededHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.290 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.JsonExceptionHandler null Definition: io.micronaut.http.server.exceptions.JsonExceptionHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.290 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.UnsatisfiedArgumentHandler null Definition: io.micronaut.http.server.exceptions.UnsatisfiedArgumentHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.290 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.HttpStatusHandler null Definition: io.micronaut.http.server.exceptions.HttpStatusHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.290 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.ConversionErrorHandler null Definition: io.micronaut.http.server.exceptions.ConversionErrorHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.290 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.DuplicateRouteHandler null Definition: io.micronaut.http.server.exceptions.DuplicateRouteHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.290 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.validation.exceptions.ConstraintExceptionHandler null Definition: io.micronaut.validation.exceptions.ConstraintExceptionHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.290 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.URISyntaxHandler null Definition: io.micronaut.http.server.exceptions.URISyntaxHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.291 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.UnsatisfiedRouteHandler null Definition: io.micronaut.http.server.exceptions.UnsatisfiedRouteHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.292 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext - Finalized bean definitions candidates: [Definition: io.micronaut.http.server.exceptions.ContentLengthExceededHandler, Definition: io.micronaut.http.server.exceptions.JsonExceptionHandler, Definition: io.micronaut.http.server.exceptions.UnsatisfiedArgumentHandler, Definition: io.micronaut.http.server.exceptions.HttpStatusHandler, Definition: io.micronaut.http.server.exceptions.ConversionErrorHandler, Definition: io.micronaut.http.server.exceptions.DuplicateRouteHandler, Definition: io.micronaut.validation.exceptions.ConstraintExceptionHandler, Definition: io.micronaut.http.server.exceptions.URISyntaxHandler, Definition: io.micronaut.http.server.exceptions.UnsatisfiedRouteHandler]
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.292 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.ContentLengthExceededHandler null Definition: io.micronaut.http.server.exceptions.ContentLengthExceededHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.292 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.JsonExceptionHandler null Definition: io.micronaut.http.server.exceptions.JsonExceptionHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.293 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.UnsatisfiedArgumentHandler null Definition: io.micronaut.http.server.exceptions.UnsatisfiedArgumentHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.293 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.HttpStatusHandler null Definition: io.micronaut.http.server.exceptions.HttpStatusHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.293 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.ConversionErrorHandler null Definition: io.micronaut.http.server.exceptions.ConversionErrorHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.293 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.DuplicateRouteHandler null Definition: io.micronaut.http.server.exceptions.DuplicateRouteHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.293 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.validation.exceptions.ConstraintExceptionHandler null Definition: io.micronaut.validation.exceptions.ConstraintExceptionHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.293 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.URISyntaxHandler null Definition: io.micronaut.http.server.exceptions.URISyntaxHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.293 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext -   class io.micronaut.http.server.exceptions.UnsatisfiedRouteHandler null Definition: io.micronaut.http.server.exceptions.UnsatisfiedRouteHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.294 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext - Qualifying bean [ExceptionHandler] for qualifier: &lt;ReadTimeoutException,Object&gt;
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.306 [default-nioEventLoopGroup-1-2] TRACE i.m.i.q.ClosestTypeArgumentQualifier - Bean type interface io.micronaut.http.server.exceptions.ExceptionHandler is not compatible with candidate generic types [class io.micronaut.http.exceptions.ContentLengthExceededException,interface io.micronaut.http.HttpResponse] of candidate Definition: io.micronaut.http.server.exceptions.ContentLengthExceededHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.306 [default-nioEventLoopGroup-1-2] TRACE i.m.i.q.ClosestTypeArgumentQualifier - Bean type interface io.micronaut.http.server.exceptions.ExceptionHandler is not compatible with candidate generic types [class com.fasterxml.jackson.core.JsonProcessingException,class java.lang.Object] of candidate Definition: io.micronaut.http.server.exceptions.JsonExceptionHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.306 [default-nioEventLoopGroup-1-2] TRACE i.m.i.q.ClosestTypeArgumentQualifier - Bean type interface io.micronaut.http.server.exceptions.ExceptionHandler is not compatible with candidate generic types [class io.micronaut.core.bind.exceptions.UnsatisfiedArgumentException,interface io.micronaut.http.HttpResponse] of candidate Definition: io.micronaut.http.server.exceptions.UnsatisfiedArgumentHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.307 [default-nioEventLoopGroup-1-2] TRACE i.m.i.q.ClosestTypeArgumentQualifier - Bean type interface io.micronaut.http.server.exceptions.ExceptionHandler is not compatible with candidate generic types [class io.micronaut.http.exceptions.HttpStatusException,interface io.micronaut.http.HttpResponse] of candidate Definition: io.micronaut.http.server.exceptions.HttpStatusHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.307 [default-nioEventLoopGroup-1-2] TRACE i.m.i.q.ClosestTypeArgumentQualifier - Bean type interface io.micronaut.http.server.exceptions.ExceptionHandler is not compatible with candidate generic types [class io.micronaut.core.convert.exceptions.ConversionErrorException,interface io.micronaut.http.HttpResponse] of candidate Definition: io.micronaut.http.server.exceptions.ConversionErrorHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.307 [default-nioEventLoopGroup-1-2] TRACE i.m.i.q.ClosestTypeArgumentQualifier - Bean type interface io.micronaut.http.server.exceptions.ExceptionHandler is not compatible with candidate generic types [class io.micronaut.web.router.exceptions.DuplicateRouteException,interface io.micronaut.http.HttpResponse] of candidate Definition: io.micronaut.http.server.exceptions.DuplicateRouteHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.307 [default-nioEventLoopGroup-1-2] TRACE i.m.i.q.ClosestTypeArgumentQualifier - Bean type interface io.micronaut.http.server.exceptions.ExceptionHandler is not compatible with candidate generic types [class javax.validation.ConstraintViolationException,interface io.micronaut.http.HttpResponse] of candidate Definition: io.micronaut.validation.exceptions.ConstraintExceptionHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.307 [default-nioEventLoopGroup-1-2] TRACE i.m.i.q.ClosestTypeArgumentQualifier - Bean type interface io.micronaut.http.server.exceptions.ExceptionHandler is not compatible with candidate generic types [class java.net.URISyntaxException,interface io.micronaut.http.HttpResponse] of candidate Definition: io.micronaut.http.server.exceptions.URISyntaxHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.308 [default-nioEventLoopGroup-1-2] TRACE i.m.i.q.ClosestTypeArgumentQualifier - Bean type interface io.micronaut.http.server.exceptions.ExceptionHandler is not compatible with candidate generic types [class io.micronaut.web.router.exceptions.UnsatisfiedRouteException,interface io.micronaut.http.HttpResponse] of candidate Definition: io.micronaut.http.server.exceptions.UnsatisfiedRouteHandler
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.309 [default-nioEventLoopGroup-1-2] DEBUG i.m.context.DefaultBeanContext - No qualifying beans of type [ExceptionHandler] found for qualifier: &lt;ReadTimeoutException,Object&gt;
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.311 [default-nioEventLoopGroup-1-2] ERROR i.m.http.server.RouteExecutor - Unexpected error occurred: Read Timeout
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter io.micronaut.http.client.exceptions.ReadTimeoutException: Read Timeout
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.http.client.exceptions.ReadTimeoutException.&lt;clinit&gt;(ReadTimeoutException.java:26)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.http.client.netty.DefaultHttpClient.lambda$exchangeImpl$45(DefaultHttpClient.java:1380)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.reactive.reactor.instrument.ReactorSubscriber.onError(ReactorSubscriber.java:64)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:295)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:280)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:419)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.reactive.reactor.instrument.ReactorSubscriber.onNext(ReactorSubscriber.java:57)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.reactive.reactor.instrument.ReactorSubscriber.onNext(ReactorSubscriber.java:57)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:271)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:286)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at io.micronaut.reactive.reactor.instrument.ReactorInstrumentation.lambda$init$0(ReactorInstrumentation.java:62)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter   at java.base/java.lang.Thread.run(Unknown Source)
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.323 [default-nioEventLoopGroup-1-2] TRACE i.m.h.s.netty.RoutingInBoundHandler - Encoding emitted response object [Internal Server Error] using codec: io.micronaut.json.codec.JsonMediaTypeCodec@6399551e
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.325 [default-nioEventLoopGroup-1-2] TRACE i.m.context.DefaultBeanContext - Looking up existing bean for key: T
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.368 [default-nioEventLoopGroup-1-2] DEBUG i.m.c.beans.DefaultBeanIntrospector - Found BeanIntrospection for type: class io.micronaut.http.hateoas.JsonError,
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.372 [default-nioEventLoopGroup-1-2] DEBUG i.m.j.m.BeanIntrospectionModule - Updating 5 properties with BeanIntrospection data for type: class io.micronaut.http.hateoas.JsonError
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.394 [default-nioEventLoopGroup-1-2] DEBUG i.m.c.beans.DefaultBeanIntrospector - Found BeanIntrospection for type: class io.micronaut.http.hateoas.DefaultLink,
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.397 [default-nioEventLoopGroup-1-2] DEBUG i.m.j.m.BeanIntrospectionModule - Updating 8 properties with BeanIntrospection data for type: class io.micronaut.http.hateoas.DefaultLink
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.414 [default-nioEventLoopGroup-1-2] DEBUG i.m.h.s.netty.RoutingInBoundHandler - Response 500 - PUT /api/games/search
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.418 [default-nioEventLoopGroup-1-2] DEBUG i.m.c.e.ApplicationEventPublisher - Publishing event: io.micronaut.http.context.event.HttpRequestTerminatedEvent[source=PUT /api/games/search]
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.418 [default-nioEventLoopGroup-1-2] TRACE i.m.c.e.ApplicationEventPublisher - Established event listeners [io.micronaut.runtime.http.scope.RequestCustomScope@4f5af8bf] for event: io.micronaut.http.context.event.HttpRequestTerminatedEvent[source=PUT /api/games/search]
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.419 [default-nioEventLoopGroup-1-2] TRACE i.m.c.e.ApplicationEventPublisher - Invoking event listener [io.micronaut.runtime.http.scope.RequestCustomScope@4f5af8bf] for event: io.micronaut.http.context.event.HttpRequestTerminatedEvent[source=PUT /api/games/search]
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.451 [default-nioEventLoopGroup-1-2] DEBUG i.m.h.client.netty.DefaultHttpClient - Sending HTTP GET to https://rawg.io/api/games/?key=b0f66f77c214441d9864062ee5580ca4&amp;search=Horizon
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.454 [default-nioEventLoopGroup-1-2] TRACE i.m.h.client.netty.DefaultHttpClient - Accept: application/json
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.454 [default-nioEventLoopGroup-1-2] TRACE i.m.h.client.netty.DefaultHttpClient - host: rawg.io
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.454 [default-nioEventLoopGroup-1-2] TRACE i.m.h.client.netty.DefaultHttpClient - connection: close
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.747 [default-nioEventLoopGroup-1-2] DEBUG io.netty.handler.ssl.SslHandler - [id: 0xfdc82b86, L:/10.1.0.167:44770 - R:rawg.io/172.67.75.230:443] HANDSHAKEN: protocol:TLSv1.3 cipher suite:TLS_AES_128_GCM_SHA256
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.826 [default-nioEventLoopGroup-1-2] DEBUG i.m.h.client.netty.DefaultHttpClient - Received response 301 from https://rawg.io/api/games/?key=****&amp;search=Horizon
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.900 [default-nioEventLoopGroup-1-3] DEBUG i.m.h.client.netty.DefaultHttpClient - Sending HTTP GET to https://rawg.io/api/games?key=****&amp;search=Horizon
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.900 [default-nioEventLoopGroup-1-3] TRACE i.m.h.client.netty.DefaultHttpClient - Accept: application/json
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.900 [default-nioEventLoopGroup-1-3] TRACE i.m.h.client.netty.DefaultHttpClient - host: rawg.io
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.900 [default-nioEventLoopGroup-1-3] TRACE i.m.h.client.netty.DefaultHttpClient - connection: close
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:46.955 [default-nioEventLoopGroup-1-3] DEBUG io.netty.handler.ssl.SslHandler - [id: 0x7b660180, L:/10.1.0.167:44776 - R:rawg.io/172.67.75.230:443] HANDSHAKEN: protocol:TLSv1.3 cipher suite:TLS_AES_128_GCM_SHA256
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:47.302 [default-nioEventLoopGroup-1-3] DEBUG i.m.h.client.netty.DefaultHttpClient - Received response 200 from https://rawg.io/api/games?key=****&amp;search=Horizon
k8-agl-rawg-adapter-6db4f4ccd8-9srrf agl-rawg-adapter 21:42:47.302 [default-nioEventLoopGroup-1-3] TRACE i.m.h.client.netty.DefaultHttpClient - HTTP Client Response Received (200 OK) for Request: GET https://rawg.io/api/games?key=****&amp;search=Horizon

   
</code></pre>
<p>Has anyone got any thoughts what could be causing this read timeout when the client is clearly returning a response?</p>

<p>Some k8s deployments allow k8s pods to have only 1 CPU. In this circumstance it is not possible for the client and server to share an event loop (which is the default since it is more efficient to share an event loop if possible). The result is you get read timeouts. So you should configure a separate event loop for the client and the server to avoid this problem.</p>
<p>See <a href="https://docs.micronaut.io/latest/guide/#clientConfiguration" rel="nofollow noreferrer">https://docs.micronaut.io/latest/guide/#clientConfiguration</a> and the section &quot;Configuring Event Loop Groups&quot;</p>
