#48294 Linked Attributes plug-in - won't update links after MODRDN operation
Closed: wontfix None Opened 5 years ago by nhosoi.

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

employee2, People, example.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

manager1, People, example.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=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

employee2, People, example.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

manager1, People, example.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.

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

3 years ago

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.

Thank you for understanding. We apologize for all inconvenience.

Metadata Update from @spichugi:
- Issue close_status updated to: wontfix (was: Fixed)

2 months ago

Login to comment on this ticket.

Metadata