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

RE: problem reading directory with 2.1.17



Please read the FAQ: http://www.openldap.org/faq/data/cache/53.html

The message "errno=11" refers to a Unix errno, not an LDAP protocol error
code. The text in parentheses immediately following "Resource temporarily
unavailable" is the text error message associated with the Unix errno, as
provided by the system's strerror() function (or equivalent).

The actual LDAP error code sent to your client was error 32, 0x20,
LDAP_NO_SUCH_OBJECT, which implies that your database is empty.

This is computer software, not philosophy. The language used has precise
meanings. There is a difference between "errno", which has a long-established
historical meaning in Unix computing, and any other number or error code.
Don't confuse them, and don't ignore the specific wording of any message;
they're written as they are for a specific reason.

  -- Howard Chu
  Chief Architect, Symas Corp.       Director, Highland Sun
  http://www.symas.com               http://highlandsun.com/hyc
  Symas: Premier OpenSource Development and Support

> -----Original Message-----
> From: owner-openldap-software@OpenLDAP.org
> [mailto:owner-openldap-software@OpenLDAP.org]On Behalf Of Ian Macdonald

> Hi,
>
> I'm finally getting around to experimenting with 2.1.x and so I've
> compiled 2.1.17 on a Red Hat Linux 9 box. Unfortunately, I'm seeing a
> problem I've never seen before.
>
> When I run the following search:
>
>   ldapsearch -vxh foo.corp -b 'dc=google,dc=com' -s sub
>
> I see this on the server:
>
> daemon: activity on 1 descriptors
> daemon: new connection on 7
> ldap_pvt_gethostbyname_a: host=foo.corp.google.com, r=0
> str2filter "(objectclass=*)"
> put_filter: "(objectclass=*)"
> put_filter: simple
> put_simple_filter: "objectclass=*"
> begin get_filter
> PRESENT
> ber_scanf fmt (m) ber:
> ber_dump: buf=0x081c5da0 ptr=0x081c5da0 end=0x081c5dad len=13
>   0000:  87 0b 6f 62 6a 65 63 74  63 6c 61 73 73
> ..objectclass
> end get_filter 0
> daemon: added 7r
> daemon: activity on:
> daemon: select: listen=6 active_threads=0 tvp=NULL
> daemon: activity on 1 descriptors
> daemon: activity on: 7r
> daemon: read activity on 7
> connection_get(7)
> connection_get(7): got connid=0
> connection_read(7): checking for input on id=0
> ber_get_next
> ldap_read: want=9, got=9
>   0000:  30 0c 02 01 01 60 07 02  01
> 0....`...
> ldap_read: want=5, got=5
>   0000:  03 04 00 80 00
> .....
> ber_get_next: tag 0x30 len 12 contents:
> ber_dump: buf=0x081c35c8 ptr=0x081c35c8 end=0x081c35d4 len=12
>   0000:  02 01 01 60 07 02 01 03  04 00 80 00
> ...`........
> do_bind
> ber_get_next
> ldap_read: want=9 error=Resource temporarily unavailable
> ber_get_next on fd 7 failed errno=11 (Resource temporarily
> unavailable)
> ber_scanf fmt ({imt) ber:
> ber_dump: buf=0x081c35c8 ptr=0x081c35cb end=0x081c35d4 len=9
>   0000:  60 07 02 01 03 04 00 80  00
> `........
> ber_scanf fmt (m}) ber:
> ber_dump: buf=0x081c35c8 ptr=0x081c35d2 end=0x081c35d4 len=2
>   0000:  00 00
> ..
> >>> dnPrettyNormal: <>
> <<< dnPrettyNormal: <>, <>
> do_bind: version=3 dn="" method=128
> send_ldap_result: conn=0 op=0 p=3
> send_ldap_result: err=0 matched="" text=""
> send_ldap_response: msgid=1 tag=97 err=0
> ber_flush: 14 bytes to sd 7
>   0000:  30 0c 02 01 01 61 07 0a  01 00 04 00 04 00
> 0....a........
> ldap_write: want=14, written=14
>   0000:  30 0c 02 01 01 61 07 0a  01 00 04 00 04 00
> 0....a........
> do_bind: v3 anonymous bind
> daemon: select: listen=6 active_threads=0 tvp=NULL
> daemon: activity on 1 descriptors
> daemon: activity on: 7r
> daemon: read activity on 7
> connection_get(7)
> connection_get(7): got connid=0
> connection_read(7): checking for input on id=0
> ber_get_next
> ldap_read: want=9, got=9
>   0000:  30 35 02 01 02 63 30 04  10
> 05...c0..
> ldap_read: want=46, got=46
>   0000:  64 63 3d 67 6f 6f 67 6c  65 2c 64 63 3d 63 6f 6d
> dc=google,dc=com
>   0010:  0a 01 02 0a 01 00 02 01  00 02 01 00 01 01 00 87
> ................
>   0020:  0b 6f 62 6a 65 63 74 63  6c 61 73 73 30 00
> .objectclass0.
> ber_get_next: tag 0x30 len 53 contents:
> ber_dump: buf=0x081c5290 ptr=0x081c5290 end=0x081c52c5 len=53
>   0000:  02 01 02 63 30 04 10 64  63 3d 67 6f 6f 67 6c 65
> ...c0..dc=google
>   0010:  2c 64 63 3d 63 6f 6d 0a  01 02 0a 01 00 02 01 00
> ,dc=com.........
>   0020:  02 01 00 01 01 00 87 0b  6f 62 6a 65 63 74 63 6c
> ........objectcl
>   0030:  61 73 73 30 00
> ass0.
> ber_get_next
> ldap_read: want=9 error=Resource temporarily unavailable
> ber_get_next on fd 7 failed errno=11 (Resource temporarily
> unavailable)
> do_search
> ber_scanf fmt ({miiiib) ber:
> ber_dump: buf=0x081c5290 ptr=0x081c5293 end=0x081c52c5 len=50
>   0000:  63 30 04 10 64 63 3d 67  6f 6f 67 6c 65 2c 64 63
> c0..dc=google,dc
>   0010:  3d 63 6f 6d 0a 01 02 0a  01 00 02 01 00 02 01 00
> =com............
>   0020:  01 01 00 87 0b 6f 62 6a  65 63 74 63 6c 61 73 73
> .....objectclass
>   0030:  30 00
> 0.
> >>> dnPrettyNormal: <dc=google,dc=com>
> => ldap_bv2dn(dc=google,dc=com,0)
> <= ldap_bv2dn(dc=google,dc=com,0)=0
> => ldap_dn2bv(272)
> <= ldap_dn2bv(dc=google,dc=com,272)=0
> => ldap_dn2bv(272)
> <= ldap_dn2bv(dc=google,dc=com,272)=0
> <<< dnPrettyNormal: <dc=google,dc=com>, <dc=google,dc=com>
> SRCH "dc=google,dc=com" 2 0    0 0 0
> begin get_filter
> PRESENT
> ber_scanf fmt (m) ber:
> ber_dump: buf=0x081c5290 ptr=0x081c52b6 end=0x081c52c5 len=15
>   0000:  87 0b 6f 62 6a 65 63 74  63 6c 61 73 73 30 00
> ..objectclass0.
> end get_filter 0
>     filter: (objectClass=*)
> ber_scanf fmt ({M}}) ber:
> ber_dump: buf=0x081c5290 ptr=0x081c52c3 end=0x081c52c5 len=2
>   0000:  00 00
> ..
>     attrs:
> => ldbm_back_search
> dn2entry_r: dn: "dc=google,dc=com"
> => dn2id( "dc=google,dc=com" )
> => ldbm_cache_open( "/var/lib/ldap/dn2id.gdbm", 34, 600 )
> ldbm_cache_open (blksize 4096) (maxids 1022) (maxindirect 9)
> <= ldbm_cache_open (opened 0)
> <= dn2id NOID
> send_ldap_result: conn=0 op=1 p=3
> send_ldap_result: err=10 matched="" text=""
> send_ldap_response: msgid=2 tag=101 err=32
> ber_flush: 14 bytes to sd 7
>   0000:  30 0c 02 01 02 65 07 0a  01 20 04 00 04 00
> 0....e... ....
> ldap_write: want=14, written=14
>   0000:  30 0c 02 01 02 65 07 0a  01 20 04 00 04 00
> 0....e... ....
> daemon: select: listen=6 active_threads=0 tvp=NULL
> daemon: activity on 1 descriptors
> daemon: activity on: 7r
> daemon: read activity on 7
> connection_get(7)
> connection_get(7): got connid=0
> connection_read(7): checking for input on id=0
> ber_get_next
> ldap_read: want=9, got=7
>   0000:  30 05 02 01 03 42 00
> 0....B.
> ber_get_next: tag 0x30 len 5 contents:
> ber_dump: buf=0x081c5320 ptr=0x081c5320 end=0x081c5325 len=5
>   0000:  02 01 03 42 00
> ...B.
> ber_get_next
> ldap_read: want=9, got=0
>
> ber_get_next on fd 7 failed errno=0 (Success)
> connection_read(7): input error=-2 id=0, closing.
> connection_closing: readying conn=0 sd=7 for close
> connection_close: deferring conn=0 sd=7
> do_unbind
> connection_resched: attempting closing conn=0 sd=7
> connection_close: conn=0 sd=7
> daemon: removing 7
> daemon: select: listen=6 active_threads=0 tvp=NULL
> daemon: activity on 1 descriptors
> daemon: select: listen=6 active_threads=0 tvp=NULL
>
> The line 'ber_get_next on fd 7 failed errno=11 (Resource temporarily
> unavailable)' seems significant. ldap.h gives error 11 as
> LDAP_ADMINLIMIT_EXCEEDED, which I've never seen before.
>
> ACLs and file permissions are currently wide-open, so that
> can't be the
> problem. 2.0.x reads the directory perfectly using the same
> slapd.conf.
>
> Anyone got a bright idea?
>
> Ian
> --
> Ian Macdonald               | May the fleas of a thousand
> camels infest
> System Administrator        | your armpits.
> Google, Inc.                |
> ian@google.com              |
> +1 650-623-4265             |
>