[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: test039-glue-ldap-concurrency time...



Pierangelo Masarati wrote:
It almost seems like select() isn't noticing there is data ready to be
read.

Are you using select() or poll()? would moving to the other interface
possibly cure the issue?
slapd was using select() since I'd accidentally committed an #undef that disabled epoll(). Looks like libldap is using poll() though.

It strikes me that part of the delay may be a kernel issue; I still see this
netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 1 ::1:* ::1:9016 SYN_SENT
tcp 0 1 ::1:* ::1:9016 SYN_SENT
tcp 0 0 ::1:9013 ::1:52590 ESTABLISHED
tcp 0 0 ::1:9013 ::1:34631 ESTABLISHED
tcp 0 0 ::1:9013 ::1:34642 ESTABLISHED


for long periods of time, and it ought to fail immediately with Connection Refused since there is no listener for port 9016. I'll try this again with libldap using select and see if the same thing happens.

There's another issue with slapd still, occasionally I saw SYN_SENT state for port 9011 which should not show up either; since there is a slapd listening on 9011 it should go to ESTABLISHED state immediately. (Or at least, faster than humanly observable.) I've recompiled with SLAPD_LISTEN_BACKLOG down to 8 and this doesn't seem to occur any more, but everything is inconclusive since the behavior varies from run to run.

--
 -- Howard Chu
 Chief Architect, Symas Corp.  http://www.symas.com
 Director, Highland Sun        http://highlandsun.com/hyc
 OpenLDAP Core Team            http://www.openldap.org/project/