Skip to content

Conversation

@jmcarp
Copy link
Contributor

@jmcarp jmcarp commented Nov 10, 2025

At the moment, DendriteInstance::start in omicron-test-utils doesn't catch errors in dpd. We spawn a child process, wait up to the timeout interval to discover the dpd port from its logs, and fail if we can't discover the port. But if dpd exits quickly, we still wait the timeout interval and swallow any errors. This patch captures the stderr of the dpd child process, checks it for an early exit, and prints the details if dpd crashes.

This was bugging me when I was having trouble getting simulated omicron to start due to my PATH pointing to the wrong dpd executable. h/t @david-crespo.

@jmcarp jmcarp requested a review from david-crespo November 10, 2025 16:22
@david-crespo
Copy link
Contributor

love it — deleted dpd as a test and got a better error on the test failure

image

@david-crespo
Copy link
Contributor

The test failure looks like this flake: #9041

At the moment, DendriteInstance::start in omicron-test-utils doesn't catch
errors in dpd. We spawn a child process, wait up to the timeout interval to
discover the dpd port from its logs, and fail if we can't discover the port.
But if dpd exits quickly, we still wait the timeout interval and swallow any
errors. This patch captures the stderr of the dpd child process, checks it for
an early exit, and prints the details if dpd crashes.
@jmcarp jmcarp force-pushed the jmcarp/test-utils-catch-dpd-errors branch from 3c4f92e to 0b3f3b0 Compare November 10, 2025 21:51
@jmcarp jmcarp merged commit 163db2f into main Nov 11, 2025
16 checks passed
@jmcarp jmcarp deleted the jmcarp/test-utils-catch-dpd-errors branch November 11, 2025 00:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants