[Pdns-users] pdns_recursor stops getting queries on Solaris 10 sparc
bert hubert
bert.hubert at netherlabs.nl
Wed Sep 12 20:45:08 UTC 2007
On Wed, Sep 12, 2007 at 09:35:27PM +0100, Alex Kiernan wrote:
> I made these changes earlier today - its been running for ~6 hours
> now, answered 5.3M queries and still hasn't hung:
Cool!
This is a variation on
http://wiki.powerdns.com/cgi-bin/trac.fcgi/changeset/1059
The more general fix is to include a line that makes sure we don't trust
numevents unless ret >=0.
I hope to hear from you regarding the gettimeofday thing, and if this was
not relevant as expected.
Many thanks Alex!
Bert
>
> Index: portsmplexer.cc
> ===================================================================
> RCS file: /cvsroot/upstream/pdns-recursor/portsmplexer.cc,v
> retrieving revision 1.1.1.1
> diff -u -r1.1.1.1 portsmplexer.cc
> --- portsmplexer.cc 12 Nov 2006 16:56:13 -0000 1.1.1.1
> +++ portsmplexer.cc 12 Sep 2007 20:29:12 -0000
> @@ -89,14 +89,14 @@
> unsigned int numevents=1;
> int ret= port_getn(d_portfd, d_pevents.get(), min(PORT_MAX_LIST,
> s_maxevents), &numevents, &timeout);
>
> - gettimeofday(now,0);
> -
> if(ret < 0 && errno!=EINTR && errno!=ETIME)
> throw FDMultiplexerException("completion port_getn returned
> error: "+stringerror());
>
> - if((ret < 0 && errno==ETIME) || numevents==0) // nothing
> + if((ret < 0 && errno==EINTR) || numevents==0) // nothing
> return 0;
>
> + gettimeofday(now,0);
> +
> d_inrun=true;
>
> for(unsigned int n=0; n < numevents; ++n) {
>
> The gettimeofday move is clearly wrong as it changes the API (I moved
> it just in case it was stamping on errno). The other one I think is
> the significant one - if we get EINTR, we want to do nothing and go
> back around the event loop, if we get ETIME then numevents is valid
> (and presumably could be 1), if my reading of the man pages is correct
> (and some brief inspection of the source behind it). It also seems to
> match better what the other mplexer implementations do.
>
> I'm going to put the gettimeofday call back where it was and start
> running tests again.
>
> --
> Alex Kiernan
> _______________________________________________
> Pdns-users mailing list
> Pdns-users at mailman.powerdns.com
> http://mailman.powerdns.com/mailman/listinfo/pdns-users
>
>
> !DSPAM:46e84daf218341188220721!
--
http://www.PowerDNS.com Open source, database driven DNS Software
http://netherlabs.nl Open and Closed source services
More information about the Pdns-users
mailing list