fix: use ephemeral port for postgres, except for TestPubsub_Disconnect #7798
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 #7752
Our implementation of starting postgres on ephemeral ports is racy: it
However, between 2 and 3 another process can come in and snatch the port.
Docker itself accepts 0 as a port mapping, and it asks the OS to allocate a free port. This closes the race.
A second issue is that we were using an ephemeral port for TestPubsub_Disconnect where we kill the postgres container and then restart it on the same port. It suffers from a similar race, where another process could snatch the port while postgres is down. To solve this, we use a hardcoded, arbitrary high port number, but one outside the Linux ephemeral range.