[
https://issues.apache.org/jira/browse/SYNCOPE-1102?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Francesco Chicchiriccò closed SYNCOPE-1102.
-------------------------------------------
Bulk close for 1.2.11
> Unique attribute update inserts additional value
> ------------------------------------------------
>
> Key: SYNCOPE-1102
> URL: https://issues.apache.org/jira/browse/SYNCOPE-1102
> Project: Syncope
> Issue Type: Bug
> Components: core
> Affects Versions: 1.1.5, 1.1.6, 1.1.7, 1.1.8, 1.2.10
> Environment: MySQL
> Reporter: Laszlo Miklosik
> Assignee: Francesco Chicchiriccò
> Priority: Major
> Fix For: 1.1.9, 1.2.11
>
> Attachments: SYNCOPE-1102.diff
>
>
> To reproduce:
> - make sure you have a unique attribute in the Syncope schema (e.g. called
> privateEmailAddress)
> - create a user via POST and use value '[email protected]' for this unique
> attribute
> - then try to update this via the Syncope REST API and to change it into
> '[email protected]' (by using the below POST payload):
> {code}
> {
> "attributesToBeUpdated": [
> {
> "schema": "privateEmailAddress",
> "valuesToBeAdded": [
> "[email protected]"
> ],
> "valuesToBeRemoved": [
> "[email protected]"
> ]
> }
> ]
> }
> {code}
> - after this the Syncope MySQL data gets incorrect (the unique attribute will
> have 2 values in table UAttrUniqueValue) and you cannot e.g. delete anymore
> the user.
> - You then can find the old unique attribute value using query:
> {code}
> select min(id) from UAttrUniqueValue group by ATTRIBUTE_ID having
> count(stringValue) > 1
> {code}
> and you can fix the Syncope data inconsistency by deleting the related row
> from UAttrUniqueValue.
> - Root cause comes from line 467:
> {code}
> for (Long attributeValueId : valuesToBeRemoved) {
> attributeValueDAO.delete(attributeValueId,
> attrUtil.attrValueClass());
> }
> {code}
> where the delete call uses the same argument values in case of both the
> non-unique and unique attributes, this in fact a non-unique attributes is
> tried to be deleted.
> Note: as UserMod payloads are not used anymore in Syncope 2 REST API, it's
> likely that this issue is not happening on Syncope 2, but might reproduce on
> Syncope 1.1.6-1.2.10.
> Note: I have a patch I applied in our overlay and can provide it if necessary.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)