On Sun, Aug 14, 2022 at 10:36 AM Andres Freund <and...@anarazel.de> wrote: > On 2022-08-14 10:03:19 +1200, Thomas Munro wrote: > > I hadn't paid attention to our existing abstract Unix socket support > > before and now I'm curious: do we have a confirmed sighting of that > > working on Windows? > > I vaguely remember successfully trying it in the past. But I just tried it > unsuccessfully in a VM and there's a bunch of other places saying it's not > working... > https://github.com/microsoft/WSL/issues/4240
I think we'd better remove our claim that it works then. Patch attached. We could also reject it, I guess, but it doesn't immediately seem harmful so I'm on the fence. On the Windows version that Cirrus is running, we happily start up with: 2022-08-13 20:44:35.174 GMT [4760][postmaster] LOG: listening on Unix socket "@c:/cirrus/.s.PGSQL.61696" ... and then client processes apparently can't see it, which is confusing but, I guess, defensible if we're only claiming it works on Linux. We don't go out of our way to avoid this feature on a per-OS basis in general, though at least on a typical Unix system it fails fast. For example, my FreeBSD system here barfs: 2022-08-15 13:26:13.483 NZST [29956] LOG: could not bind Unix address "@/tmp/.s.PGSQL.5432": No such file or directory ... because the kernel just sees an empty string and can't locate the parent directory.
From a850eb8b46bfdcd768a04b335f7de360a4bc3c69 Mon Sep 17 00:00:00 2001 From: Thomas Munro <thomas.mu...@gmail.com> Date: Mon, 15 Aug 2022 10:43:13 +1200 Subject: [PATCH] Doc: Abstract AF_UNIX sockets don't work on Windows after all. An early release of AF_UNIX in Windows might have supported Linux-style "abstract" Unix sockets with a system-wide namespace, but they do not seem to work in current Windows versions and there is no mention of any of this in the Winsock documentation. Remove the claim that it works from our documentation. Back-patch to 14, where commit c9f0624b landed. Discussion: https://postgr.es/m/20220813223646.oh2dkjrkj7jn7dpe%40awork3.anarazel.de --- doc/src/sgml/config.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index a5cd4e44c7..1fbd5fc0d4 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -759,7 +759,7 @@ include_dir 'conf.d' <para> A value that starts with <literal>@</literal> specifies that a Unix-domain socket in the abstract namespace should be created - (currently supported on Linux and Windows). In that case, this value + (currently supported on Linux). In that case, this value does not specify a <quote>directory</quote> but a prefix from which the actual socket name is computed in the same manner as for the file-system namespace. While the abstract socket name prefix can be -- 2.35.1