Обсуждение: Too-long socket paths are breaking several buildfarm members
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
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
Вложения
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
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