Bjoern A. Zeeb wrote:
> On Fri, 7 Jun 2002, Bruce Momjian wrote:
> 
> Hi,
> 
> it's been some months so I left the fullquote attached.
> 
> > Well, you are the first to report that 127.0.0.1 doesn't work for stats.
> > Unless someone else has a problem, I think we will leave it unchanged.
> 
> 
> The last years this problem was disucced several times (mostly on
> FreeBSD lists) for the reason of FreeBSD jails. I thought that we
> had another mail in 2002 about that but couldn't find it anymore.
> 
> Anyway binding to 127.0.0.1 in a jail binds to the (usually public) IP
> address of that jail which means the stats socket is basically open to
> world (from the socket point of view).

Yes, but we need an interface that will drop packets on heavy load, and
a local IP is the only way we know to do that.

> Another problem (which is not a postgresql problem per se) is that if
> the system is built without inet6 support or does not support inet6
> (as in jails) but there is a ::1 localhost in /etc/hosts the error
> messages gives a warning like:
>       could not create socket for statistics collector:
>       Protocol not supported
> which sound annoying in first places until you find out that it worked
> anyway and remember what cuases the warning.

Yes, that is confusing.  The following patch adds a message after the
error:

        trying another address for the statistics collector

which should help reduce confusion.  It will appear in 8.2.

> Is there any reason why you explicitly disallow a posix local socket
> at that point in backend/postmaster/pgstat.c:pgstat_init:
> 
> ...
>          for (addr = addrs; addr; addr = addr->ai_next)
>          {
> #ifdef HAVE_UNIX_SOCKETS
>                  /* Ignore AF_UNIX sockets, if any are returned. */
>                  if (addr->ai_family == AF_UNIX)
>                          continue;
> #endif
> ...
> 
> 
> Couldn't you use/allow (if possible or configured) a posix local socket
> or even use pipes for that?

Yes, because it can't drop packets, I think.

-- 
  Bruce Momjian   http://candle.pha.pa.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: src/backend/postmaster/pgstat.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v
retrieving revision 1.122
diff -c -c -r1.122 pgstat.c
*** src/backend/postmaster/pgstat.c     6 Apr 2006 20:38:00 -0000       1.122
--- src/backend/postmaster/pgstat.c     20 Apr 2006 10:43:16 -0000
***************
*** 216,222 ****
        struct timeval tv;
        char            test_byte;
        int                     sel_res;
! 
  #define TESTBYTEVAL ((char) 199)
  
        /*
--- 216,223 ----
        struct timeval tv;
        char            test_byte;
        int                     sel_res;
!       int                     tries = 0;
!       
  #define TESTBYTEVAL ((char) 199)
  
        /*
***************
*** 276,281 ****
--- 277,286 ----
                        continue;
  #endif
  
+               if (++tries > 1)
+                       ereport(LOG,
+                               (errmsg("trying another address for the 
statistics collector")));
+               
                /*
                 * Create the socket.
                 */
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to