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

Too-long socket paths are breaking several buildfarm members

From
Tom Lane
Date:
Buildfarm member thorntail has yet to pass the pg_upgrade test
in the REL_15_STABLE branch.  It looks like the problem reduces to
an overlength pathname:

2022-07-04 00:27:03.404 MSK [2212393:2] LOG:  Unix-domain socket path
"/home/nm/farm/sparc64_deb10_gcc_64_ubsan/REL_15_STABLE/pgsql.build/src/bin/pg_upgrade/tmp_check/.s.PGSQL.49714"is too
long(maximum 107 bytes) 

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.

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.

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.

            regards, tom lane



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

From
Michael Paquier
Date:
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

Attachment

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

From
Tom Lane
Date:
Michael Paquier <michael@paquier.xyz> writes:
> 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.

Yeah, I just came to the same conclusion and pushed an equivalent
patch.  Sorry for the duplicated effort.

            regards, tom lane



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

From
Michael Paquier
Date:
On Sun, Jul 03, 2022 at 09:40:23PM -0400, Tom Lane wrote:
> Yeah, I just came to the same conclusion and pushed an equivalent
> patch.  Sorry for the duplicated effort.

No problem.  Thanks for the quick fix.
--
Michael

Attachment