Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: current userland slapd no response



On 9/16/08, Sarton O'Brien <bsd-xen%roguewrt.org@localhost> wrote:
> On Tuesday 16 September 2008 22:51:33 matthew sporleder wrote:
>  > > slapd shutdown: waiting for 33 threads to terminate
>  > >
>  > > I imagine it's a threads issue. I'm updating/building/installing as we
>  > > speak but only saw one change to libpthread.
>  > >
>  > > Anyone know what might be causing this?
>  >
>  > That's a pretty normal shutdown message (assuming you have a bunch of
>  > open connections, anyway).  Can you try starting slapd with -d -1 and
>  > seeing if someone obvious comes up?
>
>
> Yeah, I'd imagine it's normal under a heavy load ... these were all stalled
>  transactions. Nothing was occurring.
>
>  Also, I forgot to mention that I could only stop slapd with 'kill -9'.
>
>  Now there is no load at all ... a simple ldapsearch returns:
>
>  # /usr/pkg/bin/ldapsearch
>  ldap_sasl_interactive_bind_s: No such attribute (16)
>

Are you using SASL?  If not try ldapsearch -x.

>  daemon: activity on 1 descriptor
>  daemon: activity on: 11r
>  daemon: read activity on 11
...
>  ldap_read: want=8 error=Resource temporarily unavailable
>  daemon: activity on 1 descriptor
>  daemon: waked

>  connection_get(11)
>  connection_get(11): got connid=0
>  connection_read(11): checking for input on id=0
>  ber_get_next
>  ldap_read: want=8, got=0
>
>  ber_get_next on fd 11 failed errno=0 (Undefined error: 0)
>  connection_read(11): input error=-2 id=0, closing.
>
>  conn=0 fd=11 closed (connection lost)

These are the keys, I think.  Can you try this again and identify fd
11?  I have a feeling it's the bdb file but it would be good to know
for sure if it's an index, data file, etc.  (can you make sure db_stat
is okay on all of your files?)

>  Undefined error?
>
>  But now I can actually kill slapd. I caught a dump yesterday but it may not 
> be
>  relevant as I hadn't set my stacksize to 4096 as required on amd64.
>

If it's any help:
   1443         tag = ber_get_next( conn->c_sb, &len, conn->c_currentber );
   1444         if ( tag != LDAP_TAG_MESSAGE ) {
   1445                 int err = sock_errno();
   1446
   1447                 if ( err != EWOULDBLOCK && err != EAGAIN ) {
   1448                         /* log, close and send error */
   1449                         Debug( LDAP_DEBUG_TRACE,
   1450                                 "ber_get_next on fd %d failed errno=%d 
(%s)\n",
   1451                         conn->c_sd, err, sock_errstr(err) );
   1452                         ber_free( conn->c_currentber, 1 );
   1453                         conn->c_currentber = NULL;
   1454
   1455                         return -2;
   1456                 }
   1457                 return 1;
   1458         }

But you really need to figure out why err is getting set to 0 and -2.


Home | Main Index | Thread Index | Old Index