Re: Too-long socket paths are breaking several buildfarm members

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers@lists.postgresql.org, Noah Misch <noah@leadboat.com>
Date: 2022-07-04T01:34:42Z
Lists: pgsql-hackers

Attachments

On Sun, Jul 03, 2022 at 07:22:11PM -0400, Tom Lane wrote:
> That path name is 3 bytes over the platform limit.  Evidently,
> "REL_15_STABLE" is just enough longer than "HEAD" to make this fail,
> whereas we didn't see the problem as long as the test case only
> ran in HEAD.

That tells enough about UNIXSOCK_PATH_BUFLEN.  It looks like test.sh
has been using for ages /tmp/pg_upgrade_check* as socket directory to
counter this issue.

> Members butterflyfish, massasauga, and myna likewise have yet to pass
> this test in REL_15_STABLE, though they're perfectly happy in HEAD.
> They are returning cut-down logs that don't allow diagnosing for
> certain, but a reasonable bet is that it's the same kind of problem.

Hmm.  That's possible.

> I think that the conversion of pg_upgrade's test script to TAP
> form missed a bet.  IIRC, we have mechanism somewhere to ensure
> that test socket path names are created under /tmp, or someplace else
> that's not subject to possibly-long paths of installation directories.
> That's evidently not being used here.

There is PostgreSQL::Test::Utils::tempdir_short for that, which is
what all the nodes created in Cluster.pm use for
unix_socket_directories.  One way to address the issue would be to
pass that to pg_upgrade with --socketdir, as of the attached.
--
Michael

Commits

  1. Use a short socket directory path in pg_upgrade testing.