Re: What is happening on buildfarm member baiji?
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Gregory Stark <stark@enterprisedb.com>
Cc: "Andrew Dunstan" <andrew@dunslane.net>, "Magnus Hagander" <magnus@hagander.net>, "Dave Page" <dpage@postgresql.org>, pgsql-hackers@postgresql.org
Date: 2007-05-14T14:20:39Z
Lists: pgsql-hackers
Gregory Stark <stark@enterprisedb.com> writes: > "Tom Lane" <tgl@sss.pgh.pa.us> writes: >> What happens if we just "#ifndef WIN32" the setsockopt(SO_REUSEADDR) >> call? I believe the reason that's in there is that some platforms will >> reject bind() to a previously-used address for a TCP timeout delay after >> a previous postmaster quit, but if that doesn't happen on Windows then >> maybe all we need is to not set the option. > Well it's worth checking. But whereas Windows breaking our understanding of > what SO_REUSEADDR does doesn't actually violate any specification, not having > a TIME_WAIT state at all would certainly violate the TCP spec. So it's > somewhat unlikely that that's what they're doing. But anything's possible. This is not a behavior required by the TCP spec AFAICS. Also, in a quick test neither Linux nor HPUX appear to need SO_REUSEADDR --- on both, I can restart the postmaster immediately without it. [ digs in CVS and archives for awhile... ] An interesting historical point is that the SO_REUSEADDR call did not appear in the original Berkeley Postgres95 sources. It was added in rev 1.2 of pqcomm.c, for which the only comment is Finished merging in src/backend from Dr. George's source tree so the fact is that that code has undergone approximately 0 specific peer review. I'm beginning to wonder if we really need it at all. I thought I recalled us having discussed the need for it once, but I cannot find any trace of such a discussion. regards, tom lane