Commit d9a5d7f
committed
Fix race condition in IsRunningStartupCheckStrategy with stale cached container state
IsRunningStartupCheckStrategy used container.getContainerInfo().getState() which returns stale cached state from the port-mapping check. If the container exits between the port-mapping check and the startup check, the stale 'running' state caused the startup check to pass prematurely, and the wait strategy would start on a crashed/removed container.
Fix by using the cached state as a hint (fast path) but verifying it with a single live Docker inspect. If the live inspect confirms the container is running, return success immediately. If it shows a different state (stale cache), fall through to rate-limited polling. If the live inspect fails/timeout (e.g., Docker unresponsive on slow CI), gracefully fall back to trusting the cached state as the best available information.
Also improve diagnostics:
- Include containerId in 'Container is removed' error message
- Handle NotFoundException gracefully when retrieving logs from a removed container during cleanup
- Wrap stop() in try-catch to prevent cleanup failures from suppressing the original ContainerLaunchException
Re-enable testCommandQuickExitFailure which was disabled due to this race, and add testQuickExitWithDifferentExitCode.1 parent a4d3a03 commit d9a5d7f
4 files changed
Lines changed: 74 additions & 13 deletions
File tree
- core/src
- main/java/org/testcontainers/containers
- startupcheck
- test/java/org/testcontainers/containers/startupcheck
- modules/postgresql/src/test/java/org/testcontainers/postgresql
Lines changed: 19 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
495 | 495 | | |
496 | 496 | | |
497 | 497 | | |
498 | | - | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
499 | 502 | | |
500 | 503 | | |
501 | 504 | | |
| |||
538 | 541 | | |
539 | 542 | | |
540 | 543 | | |
541 | | - | |
| 544 | + | |
| 545 | + | |
542 | 546 | | |
543 | | - | |
544 | | - | |
545 | | - | |
546 | | - | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
547 | 560 | | |
548 | | - | |
549 | 561 | | |
550 | 562 | | |
551 | 563 | | |
| |||
Lines changed: 26 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
15 | 14 | | |
| 15 | + | |
16 | 16 | | |
17 | | - | |
18 | | - | |
19 | | - | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
20 | 41 | | |
| 42 | + | |
21 | 43 | | |
22 | 44 | | |
23 | 45 | | |
| |||
Lines changed: 12 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
| |||
17 | 16 | | |
18 | 17 | | |
19 | 18 | | |
20 | | - | |
21 | 19 | | |
22 | 20 | | |
23 | 21 | | |
| |||
34 | 32 | | |
35 | 33 | | |
36 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
37 | 47 | | |
Lines changed: 17 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| 15 | + | |
14 | 16 | | |
15 | 17 | | |
16 | 18 | | |
| |||
122 | 124 | | |
123 | 125 | | |
124 | 126 | | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
125 | 142 | | |
126 | 143 | | |
127 | 144 | | |
| |||
0 commit comments