1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00

aio: Remove obsolete IO worker ID references.

In an ancient ancestor of this code, the postmaster assigned IDs to IO
workers.  Now it tracks them in an unordered array and doesn't know
their IDs, so it might be confusing to readers that it still referred to
their indexes as IDs.

No change in behavior, just variable name and error message cleanup.

Back-patch to 18.

Discussion: https://postgr.es/m/CA%2BhUKG%2BwbaZZ9Nwc_bTopm4f-7vDmCwLk80uKDHj9mq%2BUp0E%2Bg%40mail.gmail.com
This commit is contained in:
Thomas Munro
2025-07-12 13:47:59 +12:00
parent 01d618bcd7
commit 177c1f0593

View File

@ -4337,15 +4337,15 @@ maybe_start_bgworkers(void)
static bool
maybe_reap_io_worker(int pid)
{
for (int id = 0; id < MAX_IO_WORKERS; ++id)
for (int i = 0; i < MAX_IO_WORKERS; ++i)
{
if (io_worker_children[id] &&
io_worker_children[id]->pid == pid)
if (io_worker_children[i] &&
io_worker_children[i]->pid == pid)
{
ReleasePostmasterChildSlot(io_worker_children[id]);
ReleasePostmasterChildSlot(io_worker_children[i]);
--io_worker_count;
io_worker_children[id] = NULL;
io_worker_children[i] = NULL;
return true;
}
}
@ -4389,22 +4389,22 @@ maybe_adjust_io_workers(void)
while (io_worker_count < io_workers)
{
PMChild *child;
int id;
int i;
/* find unused entry in io_worker_children array */
for (id = 0; id < MAX_IO_WORKERS; ++id)
for (i = 0; i < MAX_IO_WORKERS; ++i)
{
if (io_worker_children[id] == NULL)
if (io_worker_children[i] == NULL)
break;
}
if (id == MAX_IO_WORKERS)
elog(ERROR, "could not find a free IO worker ID");
if (i == MAX_IO_WORKERS)
elog(ERROR, "could not find a free IO worker slot");
/* Try to launch one. */
child = StartChildProcess(B_IO_WORKER);
if (child != NULL)
{
io_worker_children[id] = child;
io_worker_children[i] = child;
++io_worker_count;
}
else
@ -4415,11 +4415,11 @@ maybe_adjust_io_workers(void)
if (io_worker_count > io_workers)
{
/* ask the IO worker in the highest slot to exit */
for (int id = MAX_IO_WORKERS - 1; id >= 0; --id)
for (int i = MAX_IO_WORKERS - 1; i >= 0; --i)
{
if (io_worker_children[id] != NULL)
if (io_worker_children[i] != NULL)
{
kill(io_worker_children[id]->pid, SIGUSR2);
kill(io_worker_children[i]->pid, SIGUSR2);
break;
}
}