Hi, I'm using autogroup overlay (OpenLDAP 2.4.23, autogroup v. 1.2.2.11 but the behaviour was the same with 1.2.2.6) and I'm facing a strange situation. Operations performed using openldap client tools work as expected. The same operations performed using a java client do not. I've restricted the problematic operations to modifications of existing entries. Using attached slapd.conf and ldap.ldif it's quite simple to reproduce it. Using openldap ldapmodify client: cn=user2,ou=people,dc=example,dc=com add: description description: test modifies the entry AND triggers autogroup modify operation on group cn=description adding user2 as a member of the group (see slapd.log.ok.add) The same operation performed with JExplorer modifies the entry but does NOT triggers autogroup modification (see slapd.log.java.add) I've compared the two logs and overlay related modifications are completely skipped in the java client test. Anyone has an explanation? Note: adding a new entry or deleting an existing one (if it matches any of the criteria in memberUrl) works even with Jexplorer. thanks --
Luca Scamoni |
dn: dc=example,dc=com objectClass: dcObject objectClass: organization o: example.com dc: example dn: ou=people,dc=example,dc=com objectClass: organizationalUnit ou: people dn: ou=groups,dc=example,dc=com objectClass: organizationalUnit ou: groups dn: cn=autogroup,ou=groups,dc=example,dc=com objectClass: groupOfURLs cn: autogroup memberURL: ldap:///ou=people,dc=example,dc=com??sub?(objectclass=person) member: cn=user,ou=people,dc=example,dc=com member: cn=user1,ou=people,dc=example,dc=com member: cn=user2,ou=people,dc=example,dc=com dn: cn=user,ou=people,dc=example,dc=com objectClass: person cn: user sn: user dn: cn=description,ou=groups,dc=example,dc=com objectClass: groupOfURLs cn: description memberURL: ldap:///ou=people,dc=example,dc=com??sub?(description=*) member: cn=user1,ou=people,dc=example,dc=com dn: cn=user1,ou=people,dc=example,dc=com objectClass: person cn: user1 sn: user1 description: test dn: cn=user2,ou=people,dc=example,dc=com objectClass: person cn: user2 sn: user2
include /opt/ldap/etc/schema/core.schema include /opt/ldap/etc/schema/dyngroup.schema pidfile /opt/ldap/var/run/slapd.pid argsfile /opt/ldap/var/run/slapd.args modulepath /opt/ldap/sbin moduleload memberof.la moduleload autogroup.la loglevel -1 threads 4 tool-threads 1 access to dn.base="" by * read access to dn.base="cn=Subschema" by * read database hdb suffix "dc=example,dc=com" rootdn "cn=Manager,dc=example,dc=com" rootpw secret cachesize 1000 dncachesize 3000 idlcachesize 3000 checkpoint 10 5 overlay memberof overlay autogroup autogroup-attrset groupOfURLs memberURL member directory /opt/ldap/var/openldap-data index objectClass eq index entryUUID,entryCSN eq
Feb 13 15:20:35 allianz slapd[22304]: daemon: activity on 1 descriptor Feb 13 15:20:35 allianz slapd[22304]: daemon: activity on: Feb 13 15:21:03 allianz slapd[22304]: 14r Feb 13 15:21:03 allianz slapd[22304]: Feb 13 15:21:03 allianz slapd[22304]: daemon: read active on 14 Feb 13 15:21:03 allianz slapd[22304]: daemon: epoll: listen=7 active_threads=0 tvp=zero Feb 13 15:21:03 allianz slapd[22304]: daemon: epoll: listen=8 active_threads=0 tvp=zero Feb 13 15:21:03 allianz slapd[22304]: connection_get(14) Feb 13 15:21:03 allianz slapd[22304]: connection_get(14): got connid=1003 Feb 13 15:21:03 allianz slapd[22304]: connection_read(14): checking for input on id=1003 Feb 13 15:21:03 allianz slapd[22304]: op tag 0x66, time 1297606863 Feb 13 15:21:03 allianz slapd[22304]: conn=1003 op=1 do_modify Feb 13 15:21:03 allianz slapd[22304]: conn=1003 op=1 do_modify: dn (cn=user2,ou=people,dc=example,dc=com) Feb 13 15:21:03 allianz slapd[22304]: >>> dnPrettyNormal: <cn=user2,ou=people,dc=example,dc=com> Feb 13 15:21:03 allianz slapd[22304]: <<< dnPrettyNormal: <cn=user2,ou=people,dc=example,dc=com>, <cn=user2,ou=people,dc=example,dc=com> Feb 13 15:21:03 allianz slapd[22304]: conn=1003 op=1 modifications: Feb 13 15:21:03 allianz slapd[22304]: add: description Feb 13 15:21:03 allianz slapd[22304]: one value, length 5 Feb 13 15:21:03 allianz slapd[22304]: conn=1003 op=1 MOD dn="cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: conn=1003 op=1 MOD attr=description Feb 13 15:21:03 allianz slapd[22304]: bdb_dn2entry("cn=user2,ou=people,dc=example,dc=com") Feb 13 15:21:03 allianz slapd[22304]: ==> autogroup_modify_entry <cn=user2,ou=people,dc=example,dc=com> Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: ndn: "cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: oc: "(null)", at: "(null)" Feb 13 15:21:03 allianz slapd[22304]: bdb_dn2entry("cn=user2,ou=people,dc=example,dc=com") Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: found entry: "cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: bdb_entry_get: rc=0 Feb 13 15:21:03 allianz slapd[22304]: => hdb_search Feb 13 15:21:03 allianz slapd[22304]: bdb_dn2entry("cn=user2,ou=people,dc=example,dc=com") Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access to "cn=user2,ou=people,dc=example,dc=com" "entry" requested Feb 13 15:21:03 allianz slapd[22304]: <= root access granted Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access granted by manage(=mwrscxd) Feb 13 15:21:03 allianz slapd[22304]: base_candidates: base: "cn=user2,ou=people,dc=example,dc=com" (0x00000008) Feb 13 15:21:03 allianz slapd[22304]: => test_filter Feb 13 15:21:03 allianz slapd[22304]: EQUALITY Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access to "cn=user2,ou=people,dc=example,dc=com" "objectClass" requested Feb 13 15:21:03 allianz slapd[22304]: <= root access granted Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access granted by manage(=mwrscxd) Feb 13 15:21:03 allianz slapd[22304]: <= test_filter 5 Feb 13 15:21:03 allianz slapd[22304]: hdb_search: 8 does not match filter Feb 13 15:21:03 allianz slapd[22304]: send_ldap_result: conn=1003 op=1 p=3 Feb 13 15:21:03 allianz slapd[22304]: send_ldap_result: err=0 matched="" text="" Feb 13 15:21:03 allianz slapd[22304]: hdb_modify: cn=user2,ou=people,dc=example,dc=com Feb 13 15:21:03 allianz slapd[22304]: slap_queue_csn: queing 0x42d53290 20110213142103.518452Z#000000#000#000000 Feb 13 15:21:03 allianz slapd[22304]: bdb_dn2entry("cn=user2,ou=people,dc=example,dc=com") Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: 0x00000008: cn=user2,ou=people,dc=example,dc=com Feb 13 15:21:03 allianz slapd[22304]: <= acl_access_allowed: granted to database root Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: add description Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: replace entryCSN Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: replace modifiersName Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: replace modifyTimestamp Feb 13 15:21:03 allianz slapd[22304]: oc_check_required entry (cn=user2,ou=people,dc=example,dc=com), objectClass "person" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "cn" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "objectClass" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "sn" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "structuralObjectClass" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "entryUUID" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "creatorsName" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "createTimestamp" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "description" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "entryCSN" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "modifiersName" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "modifyTimestamp" Feb 13 15:21:03 allianz slapd[22304]: => key_change(DELETE,8) Feb 13 15:21:03 allianz slapd[22304]: bdb_idl_delete_key: 8 Feb 13 15:21:03 allianz slapd[22304]: <= key_change 0 Feb 13 15:21:03 allianz slapd[22304]: => key_change(ADD,8) Feb 13 15:21:03 allianz slapd[22304]: bdb_idl_insert_key: 8 Feb 13 15:21:03 allianz slapd[22304]: <= key_change 0 Feb 13 15:21:03 allianz slapd[22304]: => entry_encode(0x00000008): Feb 13 15:21:03 allianz slapd[22304]: <= entry_encode(0x00000008): Feb 13 15:21:03 allianz slapd[22304]: hdb_modify: updated id=00000008 dn="cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: send_ldap_result: conn=1003 op=1 p=3 Feb 13 15:21:03 allianz slapd[22304]: send_ldap_result: err=0 matched="" text="" Feb 13 15:21:03 allianz slapd[22304]: ==> autogroup_response MODIFY <cn=user2,ou=people,dc=example,dc=com> Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: ndn: "cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: oc: "(null)", at: "(null)" Feb 13 15:21:03 allianz slapd[22304]: bdb_dn2entry("cn=user2,ou=people,dc=example,dc=com") Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: found entry: "cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: bdb_entry_get: rc=0 Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: ndn: "cn=autogroup,ou=groups,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: oc: "(null)", at: "(null)" Feb 13 15:21:03 allianz slapd[22304]: bdb_dn2entry("cn=autogroup,ou=groups,dc=example,dc=com") Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: found entry: "cn=autogroup,ou=groups,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: bdb_entry_get: rc=0 Feb 13 15:21:03 allianz slapd[22304]: dnMatch -1 "cn=user,ou=people,dc=example,dc=com" "cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: dnMatch -1 "cn=user1,ou=people,dc=example,dc=com" "cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: dnMatch 0 "cn=user2,ou=people,dc=example,dc=com" "cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: => test_filter Feb 13 15:21:03 allianz slapd[22304]: EQUALITY Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access to "cn=user2,ou=people,dc=example,dc=com" "objectClass" requested Feb 13 15:21:03 allianz slapd[22304]: <= root access granted Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access granted by manage(=mwrscxd) Feb 13 15:21:03 allianz slapd[22304]: <= test_filter 6 Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: ndn: "cn=description,ou=groups,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: oc: "(null)", at: "(null)" Feb 13 15:21:03 allianz slapd[22304]: bdb_dn2entry("cn=description,ou=groups,dc=example,dc=com") Feb 13 15:21:03 allianz slapd[22304]: => bdb_entry_get: found entry: "cn=description,ou=groups,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: bdb_entry_get: rc=0 Feb 13 15:21:03 allianz slapd[22304]: dnMatch -1 "cn=user1,ou=people,dc=example,dc=com" "cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: => test_filter Feb 13 15:21:03 allianz slapd[22304]: PRESENT Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access to "cn=user2,ou=people,dc=example,dc=com" "description" requested Feb 13 15:21:03 allianz slapd[22304]: <= root access granted Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access granted by manage(=mwrscxd) Feb 13 15:21:03 allianz slapd[22304]: <= test_filter 6 Feb 13 15:21:03 allianz slapd[22304]: ==> autogroup_add_member_to_group adding <cn=user2,ou=people,dc=example,dc=com> to <cn=description,ou=groups,dc=example,dc=com> Feb 13 15:21:03 allianz slapd[22304]: => hdb_search Feb 13 15:21:03 allianz slapd[22304]: bdb_dn2entry("cn=description,ou=groups,dc=example,dc=com") Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access to "cn=description,ou=groups,dc=example,dc=com" "entry" requested Feb 13 15:21:03 allianz slapd[22304]: <= root access granted Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access granted by manage(=mwrscxd) Feb 13 15:21:03 allianz slapd[22304]: base_candidates: base: "cn=description,ou=groups,dc=example,dc=com" (0x00000006) Feb 13 15:21:03 allianz slapd[22304]: => test_filter Feb 13 15:21:03 allianz slapd[22304]: EQUALITY Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access to "cn=description,ou=groups,dc=example,dc=com" "objectClass" requested Feb 13 15:21:03 allianz slapd[22304]: <= root access granted Feb 13 15:21:03 allianz slapd[22304]: => access_allowed: search access granted by manage(=mwrscxd) Feb 13 15:21:03 allianz slapd[22304]: <= test_filter 5 Feb 13 15:21:03 allianz slapd[22304]: hdb_search: 6 does not match filter Feb 13 15:21:03 allianz slapd[22304]: send_ldap_result: conn=1003 op=1 p=3 Feb 13 15:21:03 allianz slapd[22304]: send_ldap_result: err=0 matched="" text="" Feb 13 15:21:03 allianz slapd[22304]: hdb_modify: cn=description,ou=groups,dc=example,dc=com Feb 13 15:21:03 allianz slapd[22304]: bdb_dn2entry("cn=description,ou=groups,dc=example,dc=com") Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: 0x00000006: cn=description,ou=groups,dc=example,dc=com Feb 13 15:21:03 allianz slapd[22304]: <= acl_access_allowed: granted to database root Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: add member Feb 13 15:21:03 allianz slapd[22304]: dnMatch -1 "cn=user1,ou=people,dc=example,dc=com" "cn=user2,ou=people,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: replace entryCSN Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: replace modifiersName Feb 13 15:21:03 allianz slapd[22304]: bdb_modify_internal: replace modifyTimestamp Feb 13 15:21:03 allianz slapd[22304]: oc_check_required entry (cn=description,ou=groups,dc=example,dc=com), objectClass "groupOfURLs" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "objectClass" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "cn" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "structuralObjectClass" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "entryUUID" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "creatorsName" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "createTimestamp" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "memberURL" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "member" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "entryCSN" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "modifiersName" Feb 13 15:21:03 allianz slapd[22304]: oc_check_allowed type "modifyTimestamp" Feb 13 15:21:03 allianz slapd[22304]: => key_change(DELETE,6) Feb 13 15:21:03 allianz slapd[22304]: bdb_idl_delete_key: 6 Feb 13 15:21:03 allianz slapd[22304]: <= key_change 0 Feb 13 15:21:03 allianz slapd[22304]: => key_change(ADD,6) Feb 13 15:21:03 allianz slapd[22304]: bdb_idl_insert_key: 6 Feb 13 15:21:03 allianz slapd[22304]: <= key_change 0 Feb 13 15:21:03 allianz slapd[22304]: => entry_encode(0x00000006): Feb 13 15:21:03 allianz slapd[22304]: <= entry_encode(0x00000006): Feb 13 15:21:03 allianz slapd[22304]: hdb_modify: updated id=00000006 dn="cn=description,ou=groups,dc=example,dc=com" Feb 13 15:21:03 allianz slapd[22304]: send_ldap_result: conn=1003 op=1 p=3 Feb 13 15:21:03 allianz slapd[22304]: send_ldap_result: err=0 matched="" text="" Feb 13 15:21:03 allianz slapd[22304]: slap_graduate_commit_csn: removing 0x507c4a0 20110213142103.518452Z#000000#000#000000 Feb 13 15:21:03 allianz slapd[22304]: send_ldap_response: msgid=2 tag=103 err=0 Feb 13 15:21:03 allianz slapd[22304]: conn=1003 op=1 RESULT tag=103 err=0 text= Feb 13 15:21:06 allianz slapd[22304]: daemon: activity on 1 descriptor Feb 13 15:21:06 allianz slapd[22304]: daemon: activity on: Feb 13 15:21:06 allianz slapd[22304]: 14r Feb 13 15:21:06 allianz slapd[22304]: Feb 13 15:21:06 allianz slapd[22304]: daemon: read active on 14 Feb 13 15:21:06 allianz slapd[22304]: daemon: epoll: listen=7 active_threads=0 tvp=zero Feb 13 15:21:06 allianz slapd[22304]: daemon: epoll: listen=8 active_threads=0 tvp=zero Feb 13 15:21:06 allianz slapd[22304]: connection_get(14) Feb 13 15:21:06 allianz slapd[22304]: connection_get(14): got connid=1003 Feb 13 15:21:06 allianz slapd[22304]: connection_read(14): checking for input on id=1003 Feb 13 15:21:06 allianz slapd[22304]: op tag 0x42, time 1297606866 Feb 13 15:21:06 allianz slapd[22304]: ber_get_next on fd 14 failed errno=0 (Success) Feb 13 15:21:06 allianz slapd[22304]: connection_read(14): input error=-2 id=1003, closing. Feb 13 15:21:06 allianz slapd[22304]: connection_closing: readying conn=1003 sd=14 for close Feb 13 15:21:06 allianz slapd[22304]: connection_close: deferring conn=1003 sd=14 Feb 13 15:21:06 allianz slapd[22304]: daemon: activity on 1 descriptor Feb 13 15:21:06 allianz slapd[22304]: daemon: activity on: Feb 13 15:21:06 allianz slapd[22304]: Feb 13 15:21:06 allianz slapd[22304]: conn=1003 op=2 do_unbind Feb 13 15:21:06 allianz slapd[22304]: conn=1003 op=2 UNBIND Feb 13 15:21:06 allianz slapd[22304]: daemon: epoll: listen=7 active_threads=0 tvp=zero Feb 13 15:21:06 allianz slapd[22304]: daemon: epoll: listen=8 active_threads=0 tvp=zero Feb 13 15:21:06 allianz slapd[22304]: connection_resched: attempting closing conn=1003 sd=14 Feb 13 15:21:06 allianz slapd[22304]: connection_close: conn=1003 sd=14 Feb 13 15:21:06 allianz slapd[22304]: daemon: removing 14 Feb 13 15:21:06 allianz slapd[22304]: conn=1003 fd=14 closed Feb 13 15:21:15 allianz slapd[22304]: daemon: shutdown requested and initiated. Feb 13 15:21:15 allianz slapd[22304]: daemon: closing 7 Feb 13 15:21:15 allianz slapd[22304]: daemon: closing 8 Feb 13 15:21:15 allianz slapd[22304]: slapd shutdown: waiting for 0 operations/tasks to finish Feb 13 15:21:15 allianz slapd[22304]: slapd shutdown: initiated Feb 13 15:21:15 allianz slapd[22304]: ==> autogroup_db_close Feb 13 15:21:15 allianz slapd[22304]: ====> bdb_cache_release_all Feb 13 15:21:15 allianz slapd[22304]: slapd destroy: freeing system resources. Feb 13 15:21:15 allianz slapd[22304]: ==> autogroup_db_destroy Feb 13 15:21:15 allianz slapd[22304]: slapd stopped.