- Made sure that Pulp doesn't publish repos with duplicate NEVRA in some edge case scenarios. [2407](https://github.com/pulp/pulp_rpm/issues/2407) - Allow syncing repositories with duplicate NEVRA in mirror_complete mode, but make sure syncing those packages are skipped. [2691](https://github.com/pulp/pulp_rpm/issues/2691)
---
3.14.19
Bugfixes
- Using retain_package_versions (with the required "additive" sync_policy) will now avoid downloading the older packages when synced with download_policy "on_demand", resulting in much faster and more efficient syncs. [2479](https://github.com/pulp/pulp_rpm/issues/2479)
- Don't raise a fatal error when encountering mostly valid metadata that contains data we don't expect, or data in the wrong places, in situations where it doesn't really matter. [2686](https://github.com/pulp/pulp_rpm/issues/2686)
---
3.14.17
Bugfixes
- Substantial improvements to the memory consumption of syncs, with a modest improvement in time required to sync. [2296](https://github.com/pulp/pulp_rpm/issues/2296) - Improved error reporting in one scenario where it could be highly confusing. [2395](https://github.com/pulp/pulp_rpm/issues/2395)
- Fixed an issue that could cause orphan cleanup to fail for certain repos. [2459](https://github.com/pulp/pulp_rpm/issues/2459) - Fix a small FD leak during complete mirror syncs [2624](https://github.com/pulp/pulp_rpm/issues/2624)
- Fix an issue where package requirements containing an ampersand character in the name might have their data parsed incorrectly, and added a data repair script (pulpcore-manager rpm-datarepair 2460). [2460](https://github.com/pulp/pulp_rpm/issues/2460) - Fixed instances of /tmp/ being used instead of the worker's working directory. [2475](https://github.com/pulp/pulp_rpm/issues/2475)