Story #8250
Updated by ttereshc almost 4 years ago
### Motivation
There are situations when Pulp raises an `AdvisoryConflict` exception and fails a sync or copy task.
In such cases, manual resolution is needed.
It's neither easy, nor straightforward in some cases for user to resolve it.
**Situation 1**
Updated date and version are the same but pkglists differ (and one is not a subset or superset of the other).
E.g. It's likely a mistake in one of the pkglists.
Manual resolution:
- look at both and decide which one to keep
- if the "bad" one is in Pulp, remove it from Pulp (remove from every repo version and run orphan cleanup)
- if the "bad" one is in a remote source, contact remote source and ask them to fix it
**Situation 2**
Updated dates are different but pkglists have no intersection at all.
E.g. It's either and attempt to combine content from incompatible repos (RHEL6-main and RHEL7 debuginfo), or someone created a completely different advisory with already used id.
Manual resolution:
- look at both and decide what's wrong
- maybe pick one if it works for user's case (pick one = either remove from Pulp or do not add a remote one)
- maybe change what is added to a repo if it was a mistake (e.g. to combine RHEL6-main and RHEL7-debuginfo)
### Proposed solution
Since Pulp cannot safely resolve conflicts in the situations described earlier, any automatic resolution would be at user's own risk.
Introduce a global configuration `ALLOW_UNSAFE_ADVISORY_CONFLICT_RESOLUTION`, which defaults to `False`.
When it is set to `True`:
- for Situation 1, Pulp will produce a new advisory content unit with merged pkglists
- for Situation 2, Pulp will pick a newer one
This is not on a roadmap, please leave a comment if you need this feature and what is your situation/use case.