Last modified: 2014-11-15 12:21:27 UTC
Soft constraints (those that allow false negatives for technical/performance reasons) must only be applied on item creation. One example is the constraint that an item's combination of label and description must be unique for any given language. We check this, but can not (efficiently) do this with 100% accuracy. The effect is that two items with the same label/description/language combination may exist in the database. These conflicting items can then no longer be modified (except by resolving the conflict), because any attempt to save them would fail due to the uniqueness constraint (and currently without an error message, see bug 43720). The main use of this constraint is to keep people from creating a data item about some concept that already has an item. Applying the uniqueness check when creating the item, and refusing the create the item if there already is one with the same label/description/language, would solve that problem, but would still allow conflicting items to be edited later. It however also allows conflicts to be introduced by editing existing items. A special page for listing such conflicting items could be a solution.
LabelDescriptionDuplicateDetector (label-description uniqueness) and MultiLangConstraintDetector (length constraint for label, description and aliases, and also additional constraints) will both be run each time a specific language is edited. They will not be influenced by other languages.
Still note that wbeditentity can change several languages at once and then trigger a constraint for several languages. Only one of them will be fatal though, so the user must resolve the conflicts one by one.
Change 166786 had a related patch set uploaded by Daniel Kinzler: Check label/description constraint for new items. https://gerrit.wikimedia.org/r/166786
Change 166786 merged by jenkins-bot: Check label/description constraint for new items. https://gerrit.wikimedia.org/r/166786
All patches mentioned in this report were merged or abandoned - is there more work left to do here (if yes: please reset the bug report status to NEW or ASSIGNED), or can you close this ticket as RESOLVED FIXED?