Description of problem: If a MODRDN operation is made to an entry that has a managed type present, the links pointing to the renamed entry will not be updated to use the new DN.
How reproducible: Always
Steps to Reproduce: 1) Enable Linked Attributes plug-in; ldapmodify -h localhost -p 389 -D "cn=Directory manager" -W cn=Linked Attributes,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
2) Create the plug-in instance; ldapmodify -h localhost -p 389 -D "cn=Directory manager" -W dn: cn=Manager Link,cn=Linked Attributes,cn=plugins,cn=config changetype: add objectClass: top objectClass: extensibleObject cn: Manager Link linkType: directReport managedType: manager
3) Add two entries; ldapmodify -h localhost -p 389 -D "cn=Directory manager" -W dn: uid=employee1,ou=People,dc=example,dc=com changetype: add objectClass: extensibleobject objectClass: inetorgperson objectClass: organizationalPerson objectClass: person objectClass: top cn: Employee 1 sn: Employee 1 uid: employee1
dn: uid=manager1,ou=People,dc=example,dc=com changetype: add objectClass: extensibleobject objectClass: inetorgperson objectClass: organizationalPerson objectClass: person objectClass: top cn: manager 1 sn: manager 1 uid: manager1
4) Execute link operation; ldapmodify -h localhost -p 389 -D "cn=Directory manager" -W dn: uid=manager1,ou=People,dc=example,dc=com changetype: modify add: directreport directreport: uid=employee1,ou=People,dc=example,dc=com
5) Execute MODRDN operation on the uid=employee1,ou=People,dc=example,dc=com. ldapmodify -h localhost -p 389 -D "cn=Directory manager" -W dn: uid=employee1,ou=People,dc=example,dc=com changetype: modrdn newrdn: uid=employee2 deleteoldrdn: 1
Actual results: ldapsearch -h localhost -p 389 -D "cn=Directory manager" -W -b ou=people,dc=example,dc=com
dn: uid=employee2,ou=People,dc=example,dc=com objectClass: extensibleobject objectClass: inetorgperson objectClass: organizationalPerson objectClass: person objectClass: top cn: Employee 3 sn: Employee 3 manager: uid=manager1,ou=people,dc=example,dc=com uid: employee2
dn: uid=manager1,ou=People,dc=example,dc=com objectClass: extensibleobject objectClass: inetorgperson objectClass: organizationalPerson objectClass: person objectClass: top cn: manager 1 sn: manager 1 directreport: uid=employee1,ou=People,dc=example,dc=com uid: manager1
Expected results: ldapsearch -h localhost -p 389 -D "cn=Directory manager" -W -b ou=people,dc=example,dc=com
dn: uid=manager1,ou=People,dc=example,dc=com objectClass: extensibleobject objectClass: inetorgperson objectClass: organizationalPerson objectClass: person objectClass: top cn: manager 1 sn: manager 1 directreport: uid=employee2,ou=People,dc=example,dc=com uid: manager1
Additional info: If we try to repair it with fixup-linkedattrs.pl or "cn=fixup linked attributes task", then "manager" attribute will be deleted from the uid=employee2,ou=People,dc=example,dc=com. And "directreport" will stay the same in the uid=manager1,ou=People,dc=example,dc=com.
Also it will be impossible to delete "directreport" after that. ldapmodify -h localhost -p 389 -D "cn=Directory manager" -W dn: uid=manager1,ou=People,dc=example,dc=com changetype: modify delete: directreport
modifying entry "uid=manager1,ou=People,dc=example,dc=com" ldap_modify: Server is unwilling to perform (53) additional info: Linked Attrs Plugin: Failed to update link to target entry (uid=employee1,ou=People,dc=example,dc=com) error 32
I don't agree with the expected result
dn: uid=manager1,ou=People,dc=example,dc=com directreport: uid=employee2,ou=People,dc=example,dc=com
The linktype value has to be modified manually.
Rather, if uid=manager1 is renamed, the managed attribute (the value of 'manager' is supposed to be taken care by the linked attribute plug-in and it is as expected.)
But currently, there is a bug and updating linktype 'directReport' fails with LDAP_NO_SUCH_OBJECT and LDAP_TYPE_OR_VALUE_EXISTS, which is fixed in the patch to be attached.
git patch file (master) 0001-Ticket-48294-Linked-Attributes-plug-in-won-t-update-.patch
git patch file (master) -- CI test 0002-Ticket-48294-CI-test-added-test-cases-for-ticket-482.patch
Reviewed by Mark (Thank you!!)
Pushed to master: c44a3e9..c3b4c0c master -> master commit 26a749a commit c3b4c0c
Metadata Update from @nhosoi: - Issue assigned to nhosoi - Issue set to the milestone: 1.3.5.0
389-ds-base is moving from Pagure to Github. This means that new issues and pull requests will be accepted only in 389-ds-base's github repository.
This issue has been cloned to Github and is available here: - https://github.com/389ds/389-ds-base/issues/1625
If you want to receive further updates on the issue, please navigate to the github issue and click on subscribe button.
subscribe
Thank you for understanding. We apologize for all inconvenience.
Metadata Update from @spichugi: - Issue close_status updated to: wontfix (was: Fixed)
Login to comment on this ticket.