This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch fix/ersatz-roundtrip-connection-reset
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 56663814ed92d531d5bc72776cea7c5e417114a2
Author: James Fredley <[email protected]>
AuthorDate: Tue Mar 3 12:44:15 2026 -0500

    Fix flaky Ersatz empty response body test with @Retry
    
    The 'ersatz mocks empty response body' test intermittently fails with
    HttpClientException: Connection reset. This occurs because the Ersatz
    server is recreated per test method on a fixed port (19876), and the
    Micronaut @Client connection pool may hold stale connections from the
    previous test's server instance.
    
    Add @Retry(count = 2, delay = 200) scoped to HttpClientException so
    only transient connection issues trigger a retry.
    
    Assisted-by: Claude Code <[email protected]>
---
 .../groovy/micronaut/MicronautErsatzRoundtripSpec.groovy                | 2 ++
 1 file changed, 2 insertions(+)

diff --git 
a/grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzRoundtripSpec.groovy
 
b/grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzRoundtripSpec.groovy
index a5e2afffd5..a3b077bb4c 100644
--- 
a/grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzRoundtripSpec.groovy
+++ 
b/grails-test-examples/micronaut/src/integration-test/groovy/micronaut/MicronautErsatzRoundtripSpec.groovy
@@ -25,6 +25,7 @@ import io.micronaut.http.HttpResponse
 import io.micronaut.http.MediaType
 import io.micronaut.http.client.HttpClient
 import spock.lang.AutoCleanup
+import spock.lang.Retry
 import spock.lang.Specification
 
 import org.springframework.beans.factory.annotation.Autowired
@@ -444,6 +445,7 @@ class MicronautErsatzRoundtripSpec extends Specification {
         ersatz.verify()
     }
 
+    @Retry(count = 2, delay = 200, exceptions = 
[io.micronaut.http.client.exceptions.HttpClientException])
     void "full roundtrip: ersatz mocks empty response body"() {
         given: 'ersatz mocks an endpoint returning 200 with an empty JSON 
object'
         ersatz.expectations({ expect ->

Reply via email to