Thread: [ADMIN] Change Unix Socket directory at build time
Hi,
I usualy change the unix_socket_directory in the server configuration but I'd like to change it for good at build time. I read everywhere (here for example):
"unix_socket_directories (string)
The default value is normally /tmp, but that can be changed at build time."
Ok good but I've read ./configure --help and I cannot find how to do it.I usualy change the unix_socket_directory in the server configuration but I'd like to change it for good at build time. I read everywhere (here for example):
"unix_socket_directories (string)
The default value is normally /tmp, but that can be changed at build time."
Can anyone help me?
Regards
-------------------------
Santiago DIEZ
Quark Systems & CAOBA
23 rue du Buisson Saint-Louis, 75010 Paris
-------------------------
Santiago DIEZ
Quark Systems & CAOBA
23 rue du Buisson Saint-Louis, 75010 Paris
-------------------------
Hi, On 2017-04-14 17:55:39 +0200, Santiago DIEZ wrote: > I usualy change the unix_socket_directory in the server configuration but > I'd like to change it for good at build time. I read everywhere (here > <https://www.postgresql.org/docs/current/static/runtime-config-connection.html> > for example): > "unix_socket_directories (string) > The default value is normally /tmp, but that can be changed at build time." > > Ok good but I've read ./configure --help and I cannot find how to do it. You need to edit src/include/pg_config_manual.h and adapat DEFAULT_PGSOCKET_DIR - Andres
Fantastic, I have never dug into the .h files when building any program. That's quite new to me. Is the # character a comment or not? It seems like all line start with #define ------------------------- Santiago DIEZ Quark Systems & CAOBA 23 rue du Buisson Saint-Louis, 75010 Paris ------------------------- On Fri, Apr 14, 2017 at 6:21 PM, Andres Freund <andres@anarazel.de> wrote: > > Hi, > > On 2017-04-14 17:55:39 +0200, Santiago DIEZ wrote: > > I usualy change the unix_socket_directory in the server configuration but > > I'd like to change it for good at build time. I read everywhere (here > > <https://www.postgresql.org/docs/current/static/runtime-config-connection.html> > > for example): > > "unix_socket_directories (string) > > The default value is normally /tmp, but that can be changed at build time." > > > > Ok good but I've read ./configure --help and I cannot find how to do it. > > You need to edit src/include/pg_config_manual.h and adapat DEFAULT_PGSOCKET_DIR > > - Andres
To be fully transparent, the issue I'm dealing with is the following: If I set a specific unix_socket_directory in postgresql.conf then running pg_ctl start -w -t5 -D '/val/lib/postgresql/9.4/main' fails because I believe it cannot verify the server is running because it's looking for socket in /tmp. The command fails but the server is started and running. I don't know if it makes any sense. On a larger scale I only hope to solve part of the problem because if I don't configure unix_socket_directory, then pg_ctl will wait for the creation of a socket in /var/run/postgresql and will believe the server is not started although it is. So a more general question would be: "how to make sure pg_ctl expects the socket in the right place whatever the config is?" ------------------------- Santiago DIEZ Quark Systems & CAOBA 23 rue du Buisson Saint-Louis, 75010 Paris ------------------------- On Fri, Apr 14, 2017 at 6:33 PM, Santiago DIEZ <santiago.diez@caoba.fr> wrote: > Fantastic, I have never dug into the .h files when building any > program. That's quite new to me. > Is the # character a comment or not? It seems like all line start with #define > > ------------------------- > Santiago DIEZ > Quark Systems & CAOBA > 23 rue du Buisson Saint-Louis, 75010 Paris > ------------------------- > > On Fri, Apr 14, 2017 at 6:21 PM, Andres Freund <andres@anarazel.de> wrote: >> >> Hi, >> >> On 2017-04-14 17:55:39 +0200, Santiago DIEZ wrote: >> > I usualy change the unix_socket_directory in the server configuration but >> > I'd like to change it for good at build time. I read everywhere (here >> > <https://www.postgresql.org/docs/current/static/runtime-config-connection.html> >> > for example): >> > "unix_socket_directories (string) >> > The default value is normally /tmp, but that can be changed at build time." >> > >> > Ok good but I've read ./configure --help and I cannot find how to do it. >> >> You need to edit src/include/pg_config_manual.h and adapat DEFAULT_PGSOCKET_DIR >> >> - Andres
To be fully transparent, the issue I'm dealing with is the following:
If I set a specific unix_socket_directory in postgresql.conf then running
pg_ctl start -w -t5 -D '/val/lib/postgresql/9.4/main'
fails because I believe it cannot verify the server is running because
it's looking for socket in /tmp.
More likely is that it takes more than 5 seconds to start and you are timing out. (I'll presume */val* is a typo in the email only)
The source code for pg_ctl indicates that the "pid file" the postmaster creates at startup contains the information needed for both unix and tcp socket connections and this is where pg_ctl gets its "connection string" information from.
Supplying logging data from the pg_ctl run would help.
David J.
no no, if I set -t to 60 seconds (or even 1000), it's the same problem. ------------------------- Santiago DIEZ Quark Systems & CAOBA 23 rue du Buisson Saint-Louis, 75010 Paris ------------------------- On Fri, Apr 14, 2017 at 7:05 PM, David G. Johnston <david.g.johnston@gmail.com> wrote: > On Fri, Apr 14, 2017 at 9:43 AM, Santiago DIEZ <santiago.diez@caoba.fr> > wrote: >> >> To be fully transparent, the issue I'm dealing with is the following: >> If I set a specific unix_socket_directory in postgresql.conf then running >> pg_ctl start -w -t5 -D '/val/lib/postgresql/9.4/main' >> fails because I believe it cannot verify the server is running because >> it's looking for socket in /tmp. > > > More likely is that it takes more than 5 seconds to start and you are timing > out. (I'll presume */val* is a typo in the email only) > > The source code for pg_ctl indicates that the "pid file" the postmaster > creates at startup contains the information needed for both unix and tcp > socket connections and this is where pg_ctl gets its "connection string" > information from. > > Supplying logging data from the pg_ctl run would help. > > David J. >
Santiago DIEZ <santiago.diez@caoba.fr> writes: > no no, if I set -t to 60 seconds (or even 1000), it's the same problem. David's right though: any reasonably modern version of pg_ctl (since about 9.1 I believe) gets everything it needs to know out of the postmaster.pid file. Compiling in a different default unix_socket_directory might save some effort when using psql or other clients, but it should make no difference to pg_ctl. It might be useful to strace pg_ctl to see what it's doing in the problem case. regards, tom lane