Disable Awaitility uncaught-exception catching (fixes #11483)#11484
Open
ym0506 wants to merge 2 commits intotestcontainers:mainfrom
Open
Disable Awaitility uncaught-exception catching (fixes #11483)#11484ym0506 wants to merge 2 commits intotestcontainers:mainfrom
ym0506 wants to merge 2 commits intotestcontainers:mainfrom
Conversation
Author
|
CI workflows are awaiting maintainer approval (fork PR). Could a maintainer approve the workflows so required checks can run? |
Author
|
Friendly ping @testcontainers/java-team — this PR is waiting on maintainer approval to run fork workflows. |
rnorth
reviewed
Mar 6, 2026
Comment on lines
+19
to
+32
| @Test | ||
| void dockerClientProviderStrategyTestShouldUseDontCatchUncaughtExceptions() throws Exception { | ||
| byte[] bytes; | ||
| try (InputStream is = getClass() | ||
| .getClassLoader() | ||
| .getResourceAsStream("org/testcontainers/dockerclient/DockerClientProviderStrategy.class")) { | ||
| assertThat(is).isNotNull(); | ||
| bytes = is.readAllBytes(); | ||
| } | ||
|
|
||
| // Use ISO_8859_1 to preserve a stable 1:1 mapping of bytes to chars for a lightweight constant-pool substring check. | ||
| String content = new String(bytes, StandardCharsets.ISO_8859_1); | ||
| assertThat(content).contains("dontCatchUncaughtExceptions"); | ||
| } |
Member
There was a problem hiding this comment.
I think this test is a bit unusual and fragile. I'm not sure if we should do this.
rnorth
reviewed
Mar 6, 2026
| } | ||
|
|
||
| @Test | ||
| void shouldNotInterceptUncaughtExceptionsFromOtherThreads() throws Exception { |
Member
There was a problem hiding this comment.
This is really testing Awaitility rather than Testcontainers. I understand the intention, but think that overall these tests might be overkill, and not pay off in the long run. I'd be inclined to not have them, but don't know how maintainers feel about it!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #11483
Testcontainers uses Awaitility in a few internal wait loops (e.g. during Docker client strategy probing, image pull retry, container start/port checks). Awaitility’s default behavior can temporarily install a global default uncaught exception handler, which may intercept uncaught exceptions from unrelated threads and can lead to surprising/flaky test behavior.
This change explicitly disables that behavior by adding
.dontCatchUncaughtExceptions()to all internal Awaitility usages.Tests:
dontCatchUncaughtExceptions, and to validate Awaitility does not intercept uncaught exceptions from other threads when configured accordingly.