Re: [PATCH] Allow Postgres to pick an unused port to listen

Поиск
Список
Период
Сортировка
От Yurii Rashkovskii
Тема Re: [PATCH] Allow Postgres to pick an unused port to listen
Дата
Msg-id CA+RLCQyTov4RhU8J9iRebdMangR7w99i1em23DeZx7NgpjBF+Q@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [PATCH] Allow Postgres to pick an unused port to listen  (Andrew Dunstan <andrew@dunslane.net>)
Ответы Re: [PATCH] Allow Postgres to pick an unused port to listen  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
Hi Andrew,

On Fri, Apr 7, 2023, 7:07 p.m. Andrew Dunstan <andrew@dunslane.net> wrote:


On 2023-03-29 We 07:55, Tom Lane wrote:
Yurii Rashkovskii <yrashk@gmail.com> writes:
I would like to suggest a patch against master (although it may be worth
backporting it) that makes it possible to listen on any unused port.
I think this is a bad idea, mainly because this:

Instead, with this patch, one can specify `port` as `0` (the "wildcard"
port) and retrieve the assigned port from postmaster.pid
is a horrid way to find out what was picked, and yet there could
be no other.

Our existing design for this sort of thing is to let the testing
framework choose the port, and I don't really see what's wrong
with that approach.  Yes, I know it's theoretically subject to
race conditions, but that hasn't seemed to be a problem in
practice.  It's especially not a problem given that modern
testing practice tends to not open any TCP port at all, just
a Unix socket in a test-private directory, so that port
conflicts are a non-issue.


For TAP tests we have pretty much resolved the port collisions issue for TCP ports too. See commit 9b4eafcaf4

Perhaps the OP could adapt that logic to his use case.


Thank you for referencing this commit. The point why I am suggesting my patch is that I believe that my solution is a much better way to avoid collisions in the first place. Implementing an algorithm similar to the one in the referenced commit is error-pfone and can be difficult in environments like shell script.

I'm trying to understand what's wrong with reading port from the pid file (if Postgres writes information there, it's surely so that somebody can read it, otherwise, why write it in the first placd)? The proposed solution uses operating system's functionality to achieve collision-free mechanics with none of the complexity introduced in the commit.

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: Minimal logical decoding on standbys
Следующее
От: Peter Geoghegan
Дата:
Сообщение: Re: Show various offset arrays for heap WAL records