Project

Profile

Help

Story #8250

Updated by ttereshc almost 4 years ago

### Motivation 

 There are situations when Pulp raises an `AdvisoryConflict` 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`: True: 
  - for Situation 1, Pulp will produce a new advisory content unit with merged pkglists 
  - for Situation 2, Pulp will pick a newer one

Back