jamesfredley opened a new pull request, #15481:
URL: https://github.com/apache/grails-core/pull/15481

   ## Summary
   
   - Configure the Micronaut `HttpClient` in `AsyncPromiseSpec` with an 
explicit 30-second read timeout using `DefaultHttpClientConfiguration`
   - The default timeout is insufficient on loaded CI runners where Spring 
`@Async` thread pool startup on first invocation combined with processing 
overhead can exceed the client read timeout
   - Follows the same pattern already used in `FlashChainForwardSpec` for 
custom `HttpClient` configuration
   
   ## Problem
   
   `AsyncPromiseSpec > async service processes string input` intermittently 
fails with `io.micronaut.http.client.exceptions.ReadTimeoutException` on CI 
(observed on JDK 17 Functional Tests). The test calls a controller endpoint 
that uses Spring `@Async` service methods. On a loaded CI runner, the 
combination of:
   
   1. Spring `@Async` thread pool initialization (first invocation)
   2. `Thread.sleep(100)` in the service
   3. `future.get(5, TimeUnit.SECONDS)` server-side wait
   4. Response serialization overhead
   
   ...can exceed the Micronaut `HttpClient` default read timeout.
   
   ## Fix
   
   Replace `HttpClient.create(url)` (default config) with 
`HttpClient.create(url, config)` where `config` has `readTimeout = 30 seconds`. 
This is the same approach used in `FlashChainForwardSpec`.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to