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